반응형

Design Patterns - Facade Pattern


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

퍼사드 패턴은 시스템의 복잡성을 숨기고 클라이언트가 시스템에 접근할 수 있는 점을 이용하여 클라이언트에 인터페이스를 제공한다. 이 패턴의 형태는 이 패턴이 복잡성을 숨기기 위해 이미 존재하는 시스템에 인터페이스를 추가하는 것이이 때문에 구조적 패턴에 포함된다.

이 패턴은 클라이언트에 의해 요구되어지는 단순화된 메소드를 제공하는 단일 클래스를 필요로 하고 이미 존재하는 시스템 클래스의 메소드에 대한 호출을 위임(delegate)한다.

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


반응형

+ Recent posts