본문 바로가기

디자인패턴4

Factory Method 패턴 Factory Method 패턴 템플릿메소드패턴을 인스턴스 생성에 적용한 전형적인 예. 팩토리(인스턴스를 생성하는 공장)를 템플릿메소드 패턴으로 구성한 것이 팩토리메소드 패턴이다. - 인스턴스를 만드는 방법을 상위클래스측에서 결정, 구체적인 이름까지는 결정하지 않음. - 구체적인 내용은 하위클래스측에서 구현함으로써 인스턴스 생성을 위한 골격과 실제 인스턴스 생성에 사용되는 클래스를 분리함. 구현 예시 package framework; public abstract class Product { public abstract void use(); } product(인스턴스)가 가져야 할 인터페이스(API)를 추상메소드 선언으로 규정하고, 구현은 하위클래스에게 위임함. package framework; publi.. 2014. 7. 7.
Template Method 패턴 Template Method 패턴 상위 클래스의 템플릿 메소드에서 처리의 흐름을 결정하고, 하위 클래스에서 그 구체적인 처리 방법을 결정하는 디자인패턴. 구현 예시 public abstract class AbstractDisplay { // 상위 클래스 public abstract void open(); // 하위 클래스에 구현을 맡기는 추상 메소드 (1) open public abstract void print(); // 하위 클래스에 구현을 맡기는 추상 메소드 (2) print public abstract void close(); // 하위 클래스에 구현을 맡기는 추상 메소드 (3) close public final void display() { // 템플릿 메소드 open(); for (int i .. 2014. 7. 7.
Adapter 패턴 (Wrapper 패턴) Adapter 패턴 (=Wrapper 패턴) 이미 제공되어 있는 것을 그대로 사용할 수 없을 때, '제공되어 있는 것'과 '필요한 것' 사이의 '차이'를 없애주는 디자인패턴. 기존에 있는 클래스(Adaptee)를 이용하여, 필요한 기능을 제공해주는 Adaptor 클래스를 만든다. 구현 예시 1. 클래스에 의한 Adapter 패턴 - class Adapter extends Adaptee implements Target 1) 새롭게 필요한 기능을 정의한 interface Target 을 만든다. 2) Target 인터페이스를 implements한 Adaptor 클래스를 만든다. 3) Adaptor 클래스는 기존에 제공되어 있는 Adaptee 클래스를 extends 한다. 4) Adaptor 클래스에 Targ.. 2014. 7. 7.
Iterator 패턴 Iterator 패턴 무엇인가 많이 모여있는 집합체의 요소들을 통일된 방법으로, 순서대로 접근하는 방법. 구현 예시 1. 집합체를 나타내는 인터페이스인 Aggregate를 생성하고, Iterator를 만들어서 반환해주는 메소드인 iterator()를 정의함 public interface Aggregate { public abstract Iterator iterator(); } 2. Aggregate 인터페이스를 구현한 콘크리트 클래스를 작성하고 iterator()를 오버라이드 함. public class BookShelf implements Aggregate { private Book[] books; private int last = 0; public BookShelf(int maxsize) { this.. 2014. 7. 7.