Zum Hauptinhalt springen
tsecurity.de LIVE
Echtzeit-Radar & Feeds
Alle RSS Feeds
👥 Community & Social
Windows Tipps & SecurityThe Blood of Dawnwalker Director Says 60 FPS Is Enough for This RPG(23.09.2026 um 14:37 Uhr)
Windows Tipps & SecurityMeyer Sound ernennt John McMahon zum Chief Operating Officer(23.09.2026 um 11:19 Uhr)
Windows Tipps & SecurityTouchscreen erweitert Grill-Sortiment am Point of Sale(23.09.2026 um 13:45 Uhr)
Windows Tipps & Security„When Worlds Unite“: ISE 2027 erweitert Messe und Programm(23.09.2026 um 13:45 Uhr)
Sichere ProgrammierungWhat Full-Stack AI Engineering Means in Real Projects(23.09.2026 um 14:00 Uhr)
Sichere ProgrammierungThe Internet Changes Everything (Slowly)(23.09.2026 um 14:09 Uhr)
Sichere ProgrammierungMAUI vs React Native vs Flutter vs Ionic(23.09.2026 um 14:09 Uhr)
Sichere ProgrammierungAI Tools Used in Modern Software Development(23.09.2026 um 14:22 Uhr)
Sichere ProgrammierungHealthAuditor — Website Health & SEO Audit Tool(23.09.2026 um 14:24 Uhr)
Windows Tipps & SecurityThe Blood of Dawnwalker Director Says 60 FPS Is Enough for This RPG(23.09.2026 um 14:37 Uhr)
Windows Tipps & SecurityMeyer Sound ernennt John McMahon zum Chief Operating Officer(23.09.2026 um 11:19 Uhr)
Windows Tipps & SecurityTouchscreen erweitert Grill-Sortiment am Point of Sale(23.09.2026 um 13:45 Uhr)
Windows Tipps & Security„When Worlds Unite“: ISE 2027 erweitert Messe und Programm(23.09.2026 um 13:45 Uhr)
Sichere ProgrammierungWhat Full-Stack AI Engineering Means in Real Projects(23.09.2026 um 14:00 Uhr)
Sichere ProgrammierungThe Internet Changes Everything (Slowly)(23.09.2026 um 14:09 Uhr)
Sichere ProgrammierungMAUI vs React Native vs Flutter vs Ionic(23.09.2026 um 14:09 Uhr)
Sichere ProgrammierungAI Tools Used in Modern Software Development(23.09.2026 um 14:22 Uhr)
Sichere ProgrammierungHealthAuditor — Website Health & SEO Audit Tool(23.09.2026 um 14:24 Uhr)
Intelligence View
⚡ tsecurity.de Intelligence

Simple Factory

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…

0
↗ Quelle (dev.to)
Reagiere als Erste:r — dein Feedback zählt!




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:




// 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.



Image description




  1. Client

    Client instantiates specific burger object through SimpleBurgerFactory. Notice from client perspective, we don't know which concrete burger will be created, that is, object creation logic is now decoupled from client.


  2. SimpleBurgerFactory

    This class encapsulates what varies which is in this case, object creation logic! createBurger() is declared as static method because client wants to use this class to instantiate object (of course we can't have an instance before instantiating it!). createBurger() accepts BurgerType enum to determine which type of burger should be created.


  3. Burger

    This abstract class provides common interface among all the burgers and defines default behaviors.


  4. Burger subclasses

    Here are our concrete products. They can implement specific behavior by overriding methods as long as they extends Burger class.






Structure



Image description





Code





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







// 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");
}
}







// 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);
}
}







// 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");
}
}







// 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");
};
}
}







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:




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 :)

Ä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 ...

Zum Aktualisieren ziehen
ZERO-DAY CVE-2026-5695 | Arbitrary file upload vulnerability due to a lack of proper validation in…
Advisory →
TTS Reader • tsecurity.de Voice
tsecurity.de Icon
tsecurity.de App
Offline-Lesen, Eilmeldungen & 0ms Ladezeit

Installiere tsecurity.de direkt auf deinen Home-Bildschirm für das ultimative Vollbild-Magazinerlebnis ohne Browser-Leisten.

Nächster Beitrag
Themen-Radar & Intelligence Matrix
Echtzeit-Taxonomie nach Angriffsvektoren & Plattformen

tsecurity.de Live Threat Radar

🔴 LIVE RADAR
MONITORING
AKTIV
CVE-DATENBANK
LIVE
🔍
Community Radar & Live Chat
Sentinel Bot online • Live-Stream
Dein Cluster: Security Explorer
Match:
lädt…
Verbindung zum Community-Stream wird aufgebaut...
Bearbeitungsmodus — Senden überschreibt deine Nachricht
Community-Puls — was gerade passiert
lädt…
Aktivitäten deiner Analysten
lädt…
Neues Thema oder Eilmeldung einreichen

Reiche interessante Links, Zero-Days oder Debatten ein. Die Community entscheidet per Upvote über die Veröffentlichung.

Heiß diskutierte Einreichungen
🔖 Gespeicherte Artikel
📂 Keine gespeicherten Artikel vorhanden.
Zurück Ziehen Vor
Links: vorheriger Artikel Rechts: nächster Artikel unten: schließen
News NIS-2 Frühwarnung Tier-1 Intel ⏱️ 3 Min vor 10 Min
Artikeldaten werden geladen...

Zurück: vorheriger Vor: nächster
↗ Original-Quelle
Social Reaktionen Deine Reaktion zählt
Einstufung & Relevanz-Poll 0 Stimmen
In sozialen Netzwerken teilen 1-Klick