Sobes.tech
Middle+

Kuras uzdevumus jūs risinājāt, izmantojot dizaina modeļus?

sobes.tech AI

Atbilde no AI

Izmantojot dažādus modeļus, lai uzlabotu koda struktūru un uzturēšanu:

Radītāji:

  • Singleton: Viena objekta izveide, piemēram, konfigurācijas pārvaldnieks vai savienojumu baseins ar datu bāzi.
    public final class ConfigManager {
        private static ConfigManager instance;
        private ConfigManager() {} //Privāts konstruktors
        public static synchronized ConfigManager getInstance() {
            if (instance == null) {
                instance = new ConfigManager();
            }
            return instance;
        }
    }
    
  • Factory Method: Objekti ar noteiktām īpašībām, nemainot konkrēto klasi. Tika izmantots, strādājot ar dažādiem failu parsētājiem.
  • Abstract Factory: Saistītu vai atkarīgu objektu ģimeņu izveide bez to konkrētu klases norādīšanas. Tika izmantots, strādājot ar dažādiem datu avotu veidiem (piemēram, failu sistēma, datu bāze) un attiecīgiem objektiem.

Strukturālie:

  • Adapter: Viena klases saskarnes pielāgošana citai, ko klients sagaida. Tika izmantots trešo pušu bibliotēku integrācijai ar nesaderīgām saskarnēm.
    public interface Target {
        void request();
    }
    
    public class Adaptee {
        public void specificRequest() {
            System.out.println("Adaptee's specific request");
        }
    }
    
    public class Adapter implements Target {
        private Adaptee adaptee;
    
        public Adapter(Adaptee adaptee) {
            this.adaptee = adaptee;
        }
    
        @Override
        public void request() {
            adaptee.specificRequest();
        }
    }
    
  • Decorator: Dinamiski pievienojot jaunas atbildības objektiem bez to struktūras maiņas. Tika izmantots žurnāla vai kešatmiņas funkciju pievienošanai esošajiem objektiem.
  • Composite: Objektiem struktūru veidošana kokveida formā, lai attēlotu "daļa-visa" hierarhijas. Tika izmantots lietotāja saskarnes elementiem vai failu struktūrai.

Uzvedības:

  • Observer: Atkarības definēšana "viens-pret-multu" starp objektiem, tā, ka viena objekta stāvokļa izmaiņa automātiski paziņo un atjauno atkarīgos. Tika izmantots notikumu paziņošanas sistēmas realizācijai.
    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: Algoritmu ģimeņu definēšana, to inkapsulācija un maināmība. Tika izmantots dažādu datu apstrādes stratēģiju izvēlei atkarībā no konteksta.
  • Template Method: Algoritma skeleta definēšana operācijā, atlikt dažus soļus uz apakšklasēm. Tika izmantots pieprasījumu apstrādes procesa standartizācijai.