Open-Closed Principle

퍼사드 패턴(Facade Pattern) 본문

Programming/디자인패턴

퍼사드 패턴(Facade Pattern)

대박플머 2014. 6. 25. 23:11

정의

퍼사드 패턴을 사용하려면 어떤 서브시스템에 속한 일련의 복잡한 클래스들을 단수화하고 통합한 클래스를 만드러야 한다. 

다른 패턴과 달리 퍼사드 패턴은 상당히 단순한 편이다. 복잡한 추상화 같은게 필요 없다. 하지만 그렇다고 해서 퍼사드 패턴이 별 볼일 없는 패턴이라고 할 수는 없다. 

퍼사드 패턴을 이용하면 클라이언트와 서브시스템이 서로 긴밀하게 연결되지 않아도 된다는 큰 장점이 있다. 

퍼사드 패턴 - 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공한다. 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있다. 

퍼사드 패턴은 단순화된 인터페이스를 통해서 서브시스템을 더 쉽게 사용할 수 있도록 하기 위한 용도로 쓰있다. 


예제 소스를 보도록 하겠다. 

이 예제에서 퍼사드 패턴이 적용된 부분은 바로 초기화 되는 부분이다.

 Colored By Color Scripter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
public interface Shape {
   void draw();
}
 
public class Rectangle implements Shape {
 
   @Override
   public void draw() {
      System.out.println("Rectangle::draw()");
   }
}
 
public class Square implements Shape {
 
   @Override
   public void draw() {
      System.out.println("Square::draw()");
   }
}
 
public class Circle implements Shape {
 
   @Override
   public void draw() {
      System.out.println("Circle::draw()");
   }
}
 
public class ShapeMaker {
   private Shape circle;
   private Shape rectangle;
   private Shape square;
 
   public ShapeMaker() { // Facade Pattern
      circle = new Circle();
      rectangle = new Rectangle();
      square = new Square();
   }
 
   public void drawCircle(){
      circle.draw();
   }
   public void drawRectangle(){
      rectangle.draw();
   }
   public void drawSquare(){
      square.draw();
   }
}
 
public class FacadePatternDemo {
   public static void main(String[] args) {
      ShapeMaker shapeMaker = new ShapeMaker(); // Facade Pattern
 
      shapeMaker.drawCircle();
      shapeMaker.drawRectangle();
      shapeMaker.drawSquare();        
   }
}


퍼사드 패턴은 왠지 고급 개발자들이 초급 개발자들을 위해 복잡한 과정을 생략하고 프로그래밍 할 수 있게 만들다가 만들어지게 된 패턴이 아닐까 생각해 본다. 실제로 고급 개발자들은 자기의 입맛에 맞게 개발하는 것을 좋아한다. 때문에 더 세세한 것이 좋을 것이다. 뭐 각설하고, 그러니깐 우리 모두 어여 쑥쑥 자라 고급 개발자가 되어 초급 개발자들을 위해 퍼사드 패턴을 이용하여 쉽게 개발할 수 있게 해주는 능력자가 되자. 

끝.....


'Programming > 디자인패턴' 카테고리의 다른 글

Adapter Pattern(어답터 패턴)  (0) 2014.06.24
Java - 전략패턴(Strategy Pattern)  (0) 2014.06.10