[구조 패턴] Facade pattern (퍼사드 패턴)


일련의 클래스에 대해서 간단한 인터페이스를 제공한다.

 

(원문 위치 : http://www.tutorialspoint.com/design_pattern/facade_pattern.htm )

외관 패턴은 시스템의 복잡성을 숨기고 클라이언트가 시스템에 액세스 할 수 있는 인터페이스를 클라이언트에 제공합니다. 이러한 유형의 디자인 패턴은 복잡한 패턴을 숨기기 위해 기존 시스템에 인터페이스를 추가하기 때문에 구조 패턴에 속합니다.

이 패턴은 클라이언트가 필요로하는 단순화 된 메소드를 제공하고 기존 시스템 클래스 메소드에 대한 호출을 위임하는 단일 클래스를 포함합니다.

Implementation

Shape 인터페이스를 생성하고 Shape 인터페이스를 구현하는 구체적인 클래스를 생성할 것이다. 퍼사드 클래스 ShapeMaker는 다음단계로써 정의된다.

Facade Pattern UML Diagram

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()


 

Posted by kunoo
,