Middle+
140
Milliseid ülesandeid lahendasite disainimustrite kasutamisega?
Vastus AI-lt
sobes.tech AI
Kasutades erinevaid mustreid koodi struktuuri ja hooldatavuse parandamiseks:
Loomise mustrid:
- Singleton: Ühe objekti loomine, näiteks konfiguratsioonihaldur või ühenduste bassein andmebaasiga.
public final class ConfigManager { private static ConfigManager instance; private ConfigManager() {} //Privaatne konstruktor public static synchronized ConfigManager getInstance() { if (instance == null) { instance = new ConfigManager(); } return instance; } } - Factory Method: Objektide loomine teatud omadustega ilma konkreetsete klasside määramiseta. Kasutati erinevate failide parseritega töötamisel.
- Abstract Factory: Seotud või sõltuvate objektide perekondade loomine ilma nende konkreetsete klasside määramiseta. Kasutati erinevate andmeallikate tüüpide (nt failisüsteem, andmebaas) ja nende objektide töötamisel.
Struktuursed mustrid:
- Adapter: ühe klassi liidese kohandamine teisele, mida klient ootab. Kasutati kolmanda osapoole teekide integreerimiseks sobimatute liideste puhul.
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: Uute vastutuste dünaamiline lisamine objektidele nende struktuuri muutmata. Kasutati logimise või vahemälu funktsionaalsuse lisamiseks olemasolevatele objektidele.
- Composite: Objektide ühendamine puustruktuurides, et esitada "osa-täis" hierarhiaid. Kasutati kasutajaliidese elementide või failistruktuuri töötamisel.
Käitumismustrid:
- Observer: Seotud sõltuvuse määratlemine "üks-mitmele" vahel, nii et ühe objekti oleku muutmisel teavitab see automaatselt ja uuendab sõltuvad. Kasutati sündmusteate süsteemi realiseerimiseks.
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: Algoritmide perekondade määratlemine, igaühe kapseldamine ja nende vahetatavus. Kasutati erinevate andmetöötlusstrateegiate valimiseks sõltuvalt kontekstist.
- Template Method: Algoritmi skeleti määratlemine operatsioonis, jättes mõned sammud alampõhjustele. Kasutati päringute töötlemise protsessi standardiseerimiseks.