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.