Dekorasyon modeli, geliştiricilerin orijinal kodlarını değiştirmeden mevcut nesnelere yeni işlevsellik eklemelerini sağlayan yazılım mühendisliğinde güçlü bir tasarım modelidir. Bu yaklaşım özellikle kaynak kodlarını değiştirmeden servis yöntemlerine giriş yapmanız gerektiğinde yararlıdır.

Dekorasyon Desenleyici Deseni Anlamak

Dekorasyon modeli, orijinal hizmet olarak aynı arayüzü uygulayan bir sarma sınıf yaratıyor. Bu sarmalayıcı delege orijinal hizmete çağrır, ancak ek davranışlar ekler - uygulamadan önce veya sonrasında.

Dekoratör Desen ile Logging

Bir servis arayüzüne sahip olduğunuzu varsayalım:

public interface DataService {
 void fetchData();
}

Beton bir uygulama oluşturabilirsiniz:

public class RealDataService implements DataService {
 @Override
 public void fetchData() {
 // Fetch data from a database or external API
 }
}

Sonraki, log ekliyor bir dekorasyonatör sınıfı oluşturun:

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.");
 }
}

Dekoratorluk kullanarak

Giriş eklemek için, mevcut hizmetinizle dekorasyonatörü anında ekleyin:

DataService service = new RealDataService();
DataService loggedService = new LoggingDataServiceDecorator(service);

// Now, calling fetchData will include logging
loggedService.fetchData();

Dekoratör Desenlerinin Faydaları

  • Orijinal kodu değiştirmeden mevcut işlevselliği geliştirir
  • Yönlerin yeniden kullanım ve farklılıkları teşvik eder
  • Faciliteates, birden çok davranış katmanını dinamik olarak ekliyor

Programlama modelini günlük olarak kullanmak, temiz kod koruyan ve açık kapalı ilkeye sadık olan şık bir çözümdür, uygulamalarınızı genişletmek ve korumak için daha kolay hale getirmektir.