Sobes.tech
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.