Double Dispatch and Visitor pattern

* Visitor 패턴의 목적:  

   처리행위를 데이터 구조에서 분리하는 것

 > 구조를 유지하는 것과 구조를 기초로 한 처리를 수행하는 것은 별개임 

 > 데이터의 구조를 유지하면서 새로운 처리를 추가할 경우 (구조와 행위의 독립성 유지)

 > OCP(The Open-Closed Principle)의 원칙에 따름



* Double Dispatch

 Dispatch 가 연속으로 일어나는 것으로 A에 파라메터로 B를 넘기면, B에서 본인을 파라메터로

 다시 A를 호출하는 형태임. Visitor 패턴에서처럼 데이터의 구조와 처리행위를 분리하는 

 목적으로 사용이 될 수 있음.


 public interace A(

   public void methodA(B b);

 }

 

 public class Aimpl implement A{

   public void methodA(B b){

       System.out.println("Hello~ " + b.getName());

   }

 }


 public class B{

    public void methodB(A a){

        a.methodA(this);

    }

    public String getName(){

return "B";

    }

  }


 A a = new Aimpl();

 B b = new B();

 b.methodB(a);  //행위 a를 넘기면, b에서 행위 a를 수행




'Architecture > Design Pattern' 카테고리의 다른 글

패턴의 구성  (0) 2012.11.13
architecture pattern  (0) 2012.10.23
Double Dispatch and Visitor pattern  (0) 2012.10.18
리팩토링 요약  (0) 2012.05.20
SOLID원칙  (0) 2012.05.13
Design Pattern 요약파일  (0) 2010.03.13