Table of Contents
Sisustusmalli on tehokas suunnittelumalli ohjelmistosuunnittelussa, jonka avulla kehittäjät voivat lisätä uusia toimintoja olemassa oleviin kohteisiin muuttamatta alkuperäistä koodiaan. Tämä lähestymistapa on erityisen hyödyllinen, kun sinun on lisättävä kirjautuminen palvelumenetelmiin muuttamatta lähdekoodia, varmistaen puhtaan ja ylläpidettävissä olevan koodin.
Koristematerian ymmärtäminen
Sisustusmalli sisältää luoda wrapper luokan, joka toteuttaa saman käyttöliittymän kuin alkuperäinen palvelu. Tämä wrapper delegaatit soittaa alkuperäiseen palveluun, mutta lisää lisää lisäkäyttäytyminen.
Toteutus Kirjautuminen sisustustaululla
Oletetaan, että sinulla on käyttöliittymä:
public interface DataService {
void fetchData();
}
Voit luoda konkreettisen toteutuksen:
public class RealDataService implements DataService {
@Override
public void fetchData() {
// Fetch data from a database or external API
}
}
Seuraavaksi luot sisustusluokan, joka lisää kirjautumisen:
public class LoggingDataServiceDecorator implements DataService {
private final DataService wrappedService;
public LoggingDataServiceDecorator(DataService service) {
this.wrappedService = service;
}
@Override
public void fetchData() {
System.out.println("Fetching data started.");
wrappedService.fetchData();
System.out.println("Fetching data completed.");
}
}
Koristeen käyttäminen
Lisää kirjautuminen instantioi sisustaja olemassa olevalla palvelulla:
DataService service = new RealDataService();
DataService loggedService = new LoggingDataServiceDecorator(service);
// Now, calling fetchData will include logging
loggedService.fetchData();
Etuja sisustus kuvio
- Parantaa olemassa olevia toimintoja muuttamatta alkuperäistä koodia
- Edistää koodien uudelleenkäyttöä ja huolet eriytetään
- Helpottaa useiden kerrosten lisäämistä käyttäytymisen dynaamisesti
Sisustuskuvion käyttäminen puunkorjuussa on tyylikäs ratkaisu, joka ylläpitää puhdasta koodia ja noudattaa avointa periaatetta, jolloin sovelluksiasi on helpompi laajentaa ja ylläpitää.