-
행동 (2) - 템플릿 메소드(Template Method) 패턴
추상 클래스로 템플릿을 제공하고 서브 클래스에서 구체적으로 구현하는 패턴 즉, 특정 작업을 처리하는 부분을 서브 클래스로 캡슐화하여 수행하도록 설정 전체적인 흐름은 동일하면서 부분적으로 코드가 다른 경우 사용하면 코드 중복을 최소화 할 수 있다 Abstract Class : 템플릿을 제공하는 추상클래스 Concrete Class : 특정 작업을 처리하는 서브클래스 구현 Abstract Class Hook(후크) : 추상 클래스에 선언되지만 기본적인 내용만 구현되어 있거나 아무것도 들어 있지 않은 메서드 후크를 하위 클래스에서 오버라이드 할 수도 있...
-
행동 (1) - 전략(Strategy) 패턴
기능을 인터페이스로 추상화하고 여러 알고리즘으로 상호 교환 가능하게 하는 패턴 Strategy : 기능을 추상화 하는 인터페이스 Concrete Strategy : 알고리즘을 실제로 구현하는 클래스 Context : 전략을 호출하는 역할, 변하지 않는 템플릿 역할을 함 구현 Strategy public interface Movable { public void move(); } Concrete Strategy public class Train implements Movable { @Override public void move(){ ...
-
구조 (2) - 프록시(Proxy) 패턴
특정 객체에 대한 접근을 제어하거나 기능을 추가할 수 있는 패턴 특정 객체를 접근하기 전에 프록시 객체를 먼저 접근해야 한다 (like 비서) 흐름제어만 할 뿐 결과값을 조작하거나 변경시켜서는 안된다 기능 접근 제어 : 권한에 따른 접근 차단, 캐싱, 지연 로딩 프록시 패턴 부가기능 추가 데코레이터 패턴 프록시 패턴과 데코레이터 패턴은 모양이 거의 같다. 의도에 따라 패턴을 구분할 수 있다. 프록시 : 접근을 제어 하기 위한 프록시 제공 데코레이터 : 부가 기능을 동적으로 추가하고 기능 확장을 위한 유연한 대안 제공 ...
-
구조 (1) - 어댑터(Adapter) 패턴
한 클래스의 인터페이스를 사용하고자 하는 다른 인터페이스로 변환 클라이언트가 사용하는 인터페이스를 따르지 않는 기존의 코드를 재사용할 수 있게 된다 써드파티 라이브러리의 인터페이스를 일반적으로 애플리케이션 코드로 변환하는데 사용 ex) 220V-110V어댑터(a.k.a 돼지코) 용어 Client : 클라이언트 코드 Target Interface : 어댑터가 구현하는 인터페이스 (From) Adapter : Client-Adaptee를 연결해주는 역할 Adaptee : 클라이언트 코드와 호환성 없는 외부 코드 (To) 구현 Target Interface : 클라이언트가...
-
생성 (2) - 빌더(Builder) 패턴
동일한 절차를 거쳐 다양한 구성의 인스턴스를 만드는 방법 복잡한 객체를 생성하는 클래스와 표현하는 클래스를 분리하여 동일한 절차에서도 다양한 구성의 인스턴스를 만들 수 있다 구현 도메인 public class TourPlan { private String title; private int nights; private int days; private LocalDate startDate; private String whereToStay; private List<DetailPlan> plans; public TourPlan() {} ...