İnşaat & Yapısal Mühendislik
Kodlarını değiştirmeden mevcut Hizmet Yöntemlerine Eklenme için Dekorator Deseni Kullanımı
Table of Contents
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.