디자인 패턴/GOF

디자인 패턴/GOF

Proxy Pattern, Decorator Pattern

구조 패턴(Structure Pattern)은 구조가 복잡한 시스템 개발에 도움을 줄 수 있다. 그 중 프록시 패턴은 접근이 어려운 객체에 접근할 수 있도록 인터페이스 역할을 수행 하고, 데코레이터 패턴은 클래스에 기능을 추가하기 위해 다른 객체를 덧붙이는 형태이다. 실무에서는 스프링 빈으로 등록할 클래스에 인터페이스가 있는 경우, 없는 경우, 스프링 빈을 수동으로 직접 등록하는 경우, 컴포넌트 스캔으로 자동 등록하는 경우가 있다. 이렇게 다양한 케이스에서 프록시를 어떻게 적용하는지 알아본다. 즉, 다음과 같은 요구사항이 추가되었다고 생각해보자. 원본 코드를 전혀 수정하지 않고, 로그 추적기를 사용한다. 특정 메서드는 보안상 로그를 출력하지 않는다. 위의 예와 같은 다양한 케이스에 기능을 적용한다. 대리..

디자인 패턴/GOF

Template Method Pattern 적용

좋은 설계는 변하는 것과 변하지 않는 것을 분리하는 것이다. 예를들어, 핵심 기능 부분이 변하고, 부가 기능 부분이 변하지 않는 부분이라면, 이 둘을 분리해서 모듈화해야 한다. 템플릿 메서드 패턴은 이런 문제를 해결하는 디자인 패턴이다. 다음에서 추상 클래스를 활용해서 부모 클래스에 변하지 않는 템플릿 코드를 두고, 변하는 부분은 자식 클래스에 두고 상속과 오버라이딩을 사용해서 처리하는 것을 볼 수 있다. /** * 변하지 않는 부분 */ @Slf4j public abstract class AbstractTemplate { public void execute() { long startTime = System.currentTimeMillis(); call(); long endTime = System.cur..

디자인 패턴/GOF

Strategy Pattern

✏️ 개요 전략 패턴은 변하지 않는 부분을 Context라는 곳에 두고, 변하는 부분을 Strategy라는 인터페이스를 만들고 해당 인터페이스를 구현하도록 해서 문제를 해결한다. 즉, 상속이 아니라 위임으로 문제를 해결하는 것이다. 전략 패턴에서 Context는 변하지 않는 템플릿 역할을 하고, Strategy는 변하는 알고리즘 역할을 한다. GOF 디자인 패턴에서 정의한 전략 패턴의 의도는 다음과 같다. '알고리즘 제품군을 정의하고 각각을 캡슐화하여 상호 교환이 가능하게 만든다. 전략 패턴을 사용하면 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있다.' ❓ 사용법 Context public class ContextV1 { private Strategy strategy; public ..

디자인 패턴/GOF

Template Method Pattern

✏️ 개요 템플릿 메서드 패턴은 부모 클래스에 변하지 않는 템플릿 코드를 둔다. 그리고 변하는 부분은 자식 클래스에 두고 상속과 오버라이딩을 사용해서 처리한다. 💻 자바에 적용 템플릿 public abstract class AbstractTemplate { public void execute() { long startTime = System.currentTimeMillis(); // 비즈니스 로직 실행 call(); // 상속 // 비즈니스 로직 종료 long endTime = System.currentTimeMillis(); long resultTime = endTime - startTime; log.info("resultTime = {}", resultTime); } protected abstract..

kimjingyu
'디자인 패턴/GOF' 카테고리의 글 목록