[구조 패턴] Facade pattern (퍼사드 패턴)
일련의 클래스에 대해서 간단한 인터페이스를 제공한다.
(원문 위치 : http://www.tutorialspoint.com/design_pattern/facade_pattern.htm )
외관 패턴은 시스템의 복잡성을 숨기고 클라이언트가 시스템에 액세스 할 수 있는 인터페이스를 클라이언트에 제공합니다. 이러한 유형의 디자인 패턴은 복잡한 패턴을 숨기기 위해 기존 시스템에 인터페이스를 추가하기 때문에 구조 패턴에 속합니다.
이 패턴은 클라이언트가 필요로하는 단순화 된 메소드를 제공하고 기존 시스템 클래스 메소드에 대한 호출을 위임하는 단일 클래스를 포함합니다.
Implementation
Shape 인터페이스를 생성하고 Shape 인터페이스를 구현하는 구체적인 클래스를 생성할 것이다. 퍼사드 클래스 ShapeMaker는 다음단계로써 정의된다.
Step 1
인터페이스를 생성한다.
Shape.java
public interface Shape { void draw(); }
Step 2
동일 인터페이스를 구현하는 구체적 클래스를 생성한다.
Rectangle.java
public class Rectangle implements Shape { @Override public void draw() { System.out.println("Rectangle::draw()"); } }
Square.java
public class Square implements Shape { @Override public void draw() { System.out.println("Square::draw()"); } }
Circle.java
public class Circle implements Shape { @Override public void draw() { System.out.println("Circle::draw()"); } }
Step 3
퍼사드 클래스를 생성한다.
ShapeMaker.java
public class ShapeMaker { private Shape circle; private Shape rectangle; private Shape square; public ShapeMaker() { circle = new Circle(); rectangle = new Rectangle(); square = new Square(); } public void drawCircle(){ circle.draw(); } public void drawRectangle(){ rectangle.draw(); } public void drawSquare(){ square.draw(); } }
Step 4
다양한 모양의 형태를 그리기 위해 퍼사드 클래스를 사용한다.
FacadePatternDemo.java
public class FacadePatternDemo { public static void main(String[] args) { ShapeMaker shapeMaker = new ShapeMaker(); shapeMaker.drawCircle(); shapeMaker.drawRectangle(); shapeMaker.drawSquare(); } }
Step 5
결과를 확인한다.
Circle::draw() Rectangle::draw() Square::draw()
'Development > Java' 카테고리의 다른 글
[구조 패턴] Composite pattern (컴포지트 패턴) (0) | 2017.03.26 |
---|---|
[행위 패턴] Iterator pattern (이터레이터 패턴) (0) | 2017.03.26 |
[행위 패턴] Command pattern (커맨드 패턴) (0) | 2017.03.26 |
[생성 패턴] Singleton pattern (싱글턴 패턴) (0) | 2017.03.26 |
[생성 패턴] AbstractFactory pattern (추상 팩토리 패턴) (0) | 2017.03.26 |