Mô hình thiết kế là một mô hình thiết kế mạnh mẽ trong kỹ thuật phần mềm cho phép các nhà phát triển thêm chức năng mới cho các đối tượng đã có mà không sửa đổi mã gốc của chúng. Cách tiếp cận này đặc biệt hữu ích khi bạn cần thêm việc ghi nhật ký vào phương pháp dịch vụ mà không thay đổi mã nguồn, bảo đảm các cơ sở mã sạch và bảo trì được.

Hiểu gương mẫu của Đấng đoán xét

Mô hình thiết kế bao gồm việc tạo ra một lớp gói kết nối mà thực hiện cùng một giao diện với dịch vụ gốc. Các đại biểu gói gọn gọi cho dịch vụ gốc nhưng thêm vào hành vi khác như đăng nhập trước hoặc sau khi thực hiện phương pháp.

Thi hành theo gương Đấng đoán phạt

Giả sử bạn có một giao diện dịch vụ:

public interface DataService {
 void fetchData();
}

Bạn có thể tạo ra một thực hiện cụ thể:

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

Kế tiếp, hãy tạo một lớp trang trí bổ sung việc ghi nhật ký:

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

Dùng Đấng đoán phạt

Để thêm ghi nhật ký, ngay lập tức người trang trí với dịch vụ hiện có của bạn:

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

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

Những lợi ích của gương mẫu người đoán định

  • Tăng cường chức năng đã có mà không sửa đổi mã gốc
  • Đề nghị lập lại mã và phân chia các mối quan tâm
  • Điều kiện thêm nhiều lớp hành vi một cách năng động

Sử dụng mô hình trang trí cho việc ghi nhật ký là một giải pháp thanh lịch mà duy trì các mã sạch và theo sát nguyên tắc đóng cửa mở, làm cho ứng dụng của bạn dễ dàng mở rộng và duy trì.