Pola dekorator adalah pola desain yang kuat dalam rekayasa perangkat lunak yang memungkinkan pengembang untuk menambahkan fungsionalitas baru ke objek yang ada tanpa memodifikasi kode asli mereka. Pendekatan ini sangat berguna ketika Anda perlu menambahkan logging ke metode layanan tanpa mengubah kode sumber mereka, memastikan codebase yang bersih dan dapat dipertahankan.

Memahami Pola Pembolak

Pola dekorator melibatkan pembuatan kelas pembungkus yang menerapkan antarmuka yang sama dengan layanan asli. Delegasi pembungkus ini memanggil layanan asli tetapi menambahkan perilaku tambahan ⁇ seperti logging ⁇ sebelum atau sesudah pelaksanaan metode.

Mengimplementasi Logging dengan Pola Pembolak

Andaikan Anda memiliki antarmuka layanan:

public interface DataService {
 void fetchData();
}

Anda dapat membuat implementasi konkret:

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

Selanjutnya, buat kelas penghias yang menambahkan penebangan:

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

* * Menggunakan Dekorator *

Untuk menambahkan penebangan, segerakan dekorator dengan layanan Anda yang sudah ada:

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

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

Manfaat Pola Pembolak

  • Keberfungsian yang ada tanpa memodifikasi kode asli
  • Kode etik etik etik penggunaan ulang dan pemisahan kekhawatiran
  • Fakta - Fakta yang menambahkan banyak lapisan perilaku secara dinamis

Menggunakan pola dekorator untuk penebangan adalah solusi elegan yang mempertahankan kode bersih dan berpegang pada prinsip terbuka tertutup, membuat aplikasi Anda lebih mudah diperluas dan dipertahankan.