이 장식새김 패턴은 개발자가 원래 코드를 수정하지 않고 기존 객체에 새로운 기능을 추가 할 수있는 소프트웨어 엔지니어링의 강력한 디자인 패턴입니다. 이 접근법은 소스 코드를 변경하지 않고 서비스 방법을 추가 할 때 특히 유용합니다. 깨끗하고 유지 가능한 코베이스를 보장합니다.

Decorator 패턴 이해

장식자 패턴은 원래 서비스로 동일한 인터페이스를 구현하는 래퍼 클래스를 생성하는 것입니다. 이 래퍼는 원래 서비스에 통화를 위임하지만 로깅 - 베포 또는 방법 실행 후 추가 행동을 추가합니다.

Decorator 패턴으로 로깅 구현

서비스 인터페이스가 있는 공급:

public interface DataService {
 void fetchData();
}

콘크리트 구현을 만들 수 있습니다.

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

다음으로, 로깅을 추가하는 장식자 클래스를 만듭니다:

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

Decorator 사용

로깅을 추가하려면 기존 서비스에 장식기를 즉시 제거하십시오.

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

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

Decorator 패턴의 이점

  • 기존의 코드를 수정하지 않고 기존의 기능을 향상
  • 코드 재사용 및 분리를 촉진
  • 여러 층의 행동을 동적으로 추가

로깅의 장식자 패턴을 사용하여 깨끗한 코드를 유지하고 개방형 원칙에 준수하는 우아한 솔루션으로 응용 프로그램을 확장하고 유지하도록 쉽게 만듭니다.