🔧 AI Nachrichten Major AI platforms go down in unprecedented simultaneous outage(03.09.2026 um 17:34 Uhr)
🔧 AI Nachrichten ChatGPT, Claude, and Grok Down? Users Report Widespread Outages(03.09.2026 um 19:14 Uhr)
🔧 AI Nachrichten OpenAI Launches GPT-6 Astra, Says We May Have Entered the AGI Era(03.09.2026 um 22:08 Uhr)
🔧 AI Nachrichten Claude Comes to CarPlay as Fifth Major AI Chatbot App(05.09.2026 um 05:31 Uhr)
🔧 AI Nachrichten OpenAI’s GPT-6 Astra Is AGI, Says NVIDIA CEO Jensen Huang(07.09.2026 um 06:31 Uhr)
🔧 AI Nachrichten Blame AI companies for Mac mini and Mac Studio shortage(31.08.2026 um 10:32 Uhr)
🔧 AI Nachrichten Major AI platforms go down in unprecedented simultaneous outage(03.09.2026 um 17:34 Uhr)
🔧 AI Nachrichten ChatGPT, Claude, and Grok Down? Users Report Widespread Outages(03.09.2026 um 19:14 Uhr)
🔧 AI Nachrichten OpenAI Launches GPT-6 Astra, Says We May Have Entered the AGI Era(03.09.2026 um 22:08 Uhr)
🔧 AI Nachrichten Claude Comes to CarPlay as Fifth Major AI Chatbot App(05.09.2026 um 05:31 Uhr)
🔧 AI Nachrichten OpenAI’s GPT-6 Astra Is AGI, Says NVIDIA CEO Jensen Huang(07.09.2026 um 06:31 Uhr)
🔧 AI Nachrichten Blame AI companies for Mac mini and Mac Studio shortage(31.08.2026 um 10:32 Uhr)

🔧 Programmierung 🕛 kürzlich 5 Min Lesezeit
0

Simple Factory

↗ Quelle (dev.to)
🗣️ Stimme:
📑 Inhaltsübersicht




What is Simple Factory?




Simple factory is not design pattern. It simply decouples object creation from client code. In other words, Simple factory encapsulates object instantiation by moving instantiation logic to a separate class.




Simple factory is often confused with Factory Pattern. We're going to study Simple factory to clarify their difference. Also, learning Simple factory helps us to understand Factory pattern easily.






What problem Simple factory can solve?



Programming to concrete implementation should be avoided because it makes an application very difficult to maintain. It is always preferable to program to interface. If you're instantiating a concrete class in client code, then Simple factory comes in handy as Simple factory can decouple object creation from client. This makes our application more extensible and maintainable.






Problem



We are developing system for Burger shop. The system needs to create various burgers such as beef burger, chicken burger and so on.



Our first attempt would be like this:




CODE
// Client orders a burger
Burger orderBurger(String type) {
Burger burger;

if (type.equals("beef")) {
burger = new BeefBurger();
} else if (type.equals("chicken")) {
burger = new ChickenBurger();
} else if (type.equals("fish")) {
burger = new FishBurger();
}

burger.prepareBun();
burger.grillPatty();
burger.addToppings();
burger.wrap();

return burger;
}






The problem is, we are coding to implementation not to interface. Where? We use if statement and instantiate a concrete class based on a burger type.

Why is it the problem? Our client code is tightly coupled with object creation, leading less flexibility!! Let's say if we don't sell fish burgers anymore, and start selling veggie burgers. We need to visit our client code and modify it. That is to say, it is not closed for modification.





Solution



To solve the problem, we can create separate class which will be responsible only for object creation. Then our client code doesn't need to worry about object creation and be able to depend on abstraction. This technic is known as "Encapsulate what varies". We expect the code about instantiating concrete objects will be changed frequently, while prepareBun(), grillPatty(), addToppings(), wrap() processes are likely to stay the same among all the burgers in the future.

The advantage of Simple factory is that it is reusable by other classes. We might have other client classes such as BurgerRestaurant, BurgerCateringShop which will use SimpleBurgerFactory.createBurger() method.







Code





CODE
public enum BurgerType {
BEEF,
CHICKEN,
FISH,
VEGGIE
}







CODE
// Abstract Product
public abstract class Burger {

public BurgerType burgerType;
public List<String> toppings = new ArrayList<>();

public void prepareBun() {
System.out.println("Preparing a bun");
}

public void grillPatty() {
if (burgerType == null) {
throw new IllegalStateException("pattyType is undefined");
}
System.out.println("Grill a " + burgerType + " patty");
}

public void addToppings() {
for (String item : toppings) {
System.out.println("Add " + item);
}
}

public void wrap() {
System.out.println("Wrap a burger up");
}
}







CODE
// Concrete product
public class BeefBurger extends Burger {

public BeefBurger() {
burgerType = BurgerType.BEEF;
List<String> items = List.of("lettuce", "pickle slices", "tomato slice", "BBQ sauce");
toppings.addAll(items);
}
}







CODE
// Concrete product
public class VeggieBurger extends Burger {

public VeggieBurger() {
burgerType = BurgerType.VEGGIE;
List<String> items = List.of("smoked paprika", "garlic chips", "crushed walnuts", "veggie sauce");
toppings.addAll(items);
}

// Concrete product can implement specific behavior that differs from other products
@Override
public void wrap() {
System.out.println("Wrapping paper shouldn't print any meats but vegetables");
}
}







CODE
// Simple factory, responsible for instantiating an object
public class SimpleBurgerFactory {

public static Burger createBurger(BurgerType type) {
return switch (type) {
case BEEF -> new BeefBurger();
case CHICKEN -> new ChickenBurger();
case FISH -> new FishBurger();
case VEGGIE -> new VeggieBurger();
default -> throw new IllegalArgumentException("unknown burger type");
};
}
}







CODE
public class Client {

public static void main(String[] args) {
Burger burger = orderBurger(BurgerType.VEGGIE);
System.out.println(burger); // Check if the object is actually veggie burger
}

public static Burger orderBurger(BurgerType type) {
// Factory is responsible for object creation
Burger burger = SimpleBurgerFactory.createBurger(type);

burger.prepareBun();
burger.grillPatty();
burger.addToppings();
burger.wrap();

return burger;
}
}





Output:




CODE
Preparing a bun
Grill a VEGGIE patty
Add smoked paprika
Add garlic chips
Add crushed walnuts
Add veggie sauce
Wrapping paper shouldn't print any meats but vegetables
com.factories.simpleFactory.VeggieBurger@9807454









Pitfalls




  • Decision-making code for object instantiation can be more complex sometime. In such a case, we might as well consider using Factory method instead.






Comparison with Factory Pattern




  • In Simple factory, there is typically one factory class to decide which type of product to create, while Factory pattern may introduce multiple factories.

  • Simple factory often uses static method to create objects, which makes it easy to call but hard to extend. On the other hand, Factory method uses abstract method in super class, which acts as interface for all the factories and subclasses will provide concrete implementation for object instantiation.






You can check all the design pattern implementations here.

GitHub Repository






P.S.

I'm new to write tech blog, if you have advice to improve my writing, or have any confusing point, please leave a comment!

Thank you for reading :)

Vollständiger Original-Bericht
Ausführliche Details, Code-Beispiele & Hersteller-Stellungnahme auf dev.to.
↗ Original-Artikel auf dev.to lesen
Wie bewertest du diesen Beitrag?
1 Klick Feedback
Teilen mit Netzwerk & Team:

Community-Analysen & Experten-Meinungen 0

Verfasse deine eigene Analyse, teile Workarounds oder diskutiere diesen Vorfall im Blog.
Noch keine Community-Analyse verfasst. Markiere einen Textabschnitt oder klicke oben auf Eigene Analyse verfassen“!
Community Pulse: Relevanz-Einschätzung
1 Klick Experten-Votum
🔴 Akute Relevanz 0%
🟡 In Evaluierung 0%
🟢 Keine Auswirkung 0%
Spannende Innovation 0%
Verwandte Story-Cluster & Quellen (Vektor-KI)
Port 8095 Engine
3 Quellen
GPT-6 Astra Release Today? OpenAI’s Next Major AI Model Is Almost Here
1 Quelle
Apple accuses OpenAI of destroying evidence as trade-secrets fight intensifies
1 Quelle
Major AI platforms go down in unprecedented simultaneous outage
Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten Simple Factory

Thematisch verwandte Begriffe: Simple, Factory · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...