Sobes.tech
Middle+

Milyen feladatokat oldott meg tervezési minták segítségével?

sobes.tech MI

Válasz az MI-től

Különböző mintákat alkalmaztam a kód szerkezetének és karbantarthatóságának javítása érdekében:

Létrehozó minták:

  • Singleton: Egyetlen példány létrehozására, például konfigurációkezelő vagy kapcsolatmedence esetén.
    public final class ConfigManager {
        private static ConfigManager instance;
        private ConfigManager() {} // Privát konstruktor
        public static synchronized ConfigManager getInstance() {
            if (instance == null) {
                instance = new ConfigManager();
            }
            return instance;
        }
    }
    
  • Factory Method: Objektumok létrehozása meghatározott tulajdonságokkal anélkül, hogy konkrét osztályokat kellene megadni. Fájlparsers különböző típusainál használtam.
  • Abstract Factory: Kapcsolódó vagy függő objektumcsaládok létrehozása anélkül, hogy meg kellene határozni azok konkrét osztályait. Különböző adatforrások (pl. fájlrendszer, adatbázis) és azokhoz tartozó objektumok kezelésére.

Strukturális minták:

  • Adapter: Egy osztály interfészének alkalmazása egy másikhoz, amit a kliens elvár. Harmadik fél könyvtárak inkompatibilis interfészeinek integrálására.
    public interface Target {
        void request();
    }
    
    public class Adaptee {
        public void specificRequest() {
            System.out.println("Adaptee speciális kérése");
        }
    }
    
    public class Adapter implements Target {
        private Adaptee adaptee;
    
        public Adapter(Adaptee adaptee) {
            this.adaptee = adaptee;
        }
    
        @Override
        public void request() {
            adaptee.specificRequest();
        }
    }
    
  • Decorator: Dinamikusan új feladatokat adhatunk hozzá objektumokhoz anélkül, hogy megváltoztatnánk azok szerkezetét. Naplózás vagy cache funkciók hozzáadására.
  • Composite: Objektumok összefűzése fához hasonló struktúrákban, hierarchiák "rész-egész" megjelenítéséhez. Felhasználói felület elemek vagy fájlstruktúrák kezelésére.

Viselkedési minták:

  • Observer: Egy-az-többhöz függőség meghatározása, ahol egy változás esetén minden érintett automatikusan frissül. Eseményértesítési rendszerhez.
    import java.util.ArrayList;
    import java.util.List;
    
    public class Subject {
        private List<Observer> observers = new ArrayList<>();
        private int state;
    
        public void attach(Observer observer) {
            observers.add(observer);
        }
    
        public void setState(int state) {
            this.state = state;
            notifyObservers();
        }
    
        private void notifyObservers() {
            for (Observer observer : observers) {
                observer.update();
            }
        }
    }
    
    public interface Observer {
        void update();
    }
    
  • Strategy: Algoritmus családok meghatározása, azok kapszulázása és cserélhetőségük biztosítása. Különböző adatfeldolgozási stratégiák kiválasztására.
  • Template Method: Az algoritmus vázának meghatározása, bizonyos lépések késleltetése alosztályokra. Kérésfeldolgozási folyamat standardizálására.