2012-06-28 3 views
1

어떤 디자인 패턴인지 궁금했습니다.이것은 일반적인 디자인 패턴입니까, 가능하면 대리인 패턴입니까?

나는 방법이있다, dao.read().

dao.read(a) { 
    marshal(a.b) 
    a.rootField1() 

    marshal(b) { 
     b.readField1(); // I want to move these calls ... 
     b.readField2(); 
     b.readField3();  
    } 
} 

는 디자인 패턴으로 리팩토링인가 :

dao.read(a) { 
    b = a.moreFields 
    b.readField1(); // I want to move these calls ... 
    b.readField2(); 
    b.readField3(); 

    a.rootField1(); 
} 

이의 내가 이것으로 그 읽기 방법을 리팩토링 가정 해 봅시다? 또는 리팩토링. 나는 리팩토링을 많이하는 경향이 있고 이름을주고 싶기 때문에 묻습니다. 이 메서드를 마샬링하여 대리자 클래스로 옮긴다면 위임이라고 생각합니다.

+2

이름은 "추출 방법"이며 디자인 패턴이 아니지만 최종 결과에 패턴이 없기 때문에 "리팩토링 패턴"이라고 할 수 있습니다. 방법을 추출하는 바로 그 행동이 그 패턴을 따른다. –

+0

'외관'뿐만 아니라 고전적인 외관처럼 보입니다. 이 경우 마샬링 메서드는 더 큰 코드 본문에 대한 단순화 된 인터페이스입니다. http://en.wikipedia.org/wiki/Facade_pattern –

+1

아니요, 외관은 전혀 관련이 없습니다. 그것은 당신이 당신의 목적에 맞지 않는 외래 API를 가지고있는 경우에 해당하므로, API의 인터페이스를 당신의 목적에 더 잘 맞출 수 있도록 외관의 코드 레이어를 만드십시오. –

답변

0

그것은 desgn 패턴이 아닙니다. 기껏해야 OOP의 기본 기능인 "다형성"입니다. 객체 a에 대한 클래스 A와 객체 b에 대한 B의 메소드로 처리를 추가 할 수 있습니다. 인터페이스를 공유하겠습니다.

interface Marshall { 
    void marshall(<...>); 
} 

...하지만 다른 클래스가 될 수 있습니다.

당신은 분명 DP는 A와 B가 모두 포함 된 복합을 사용하는, 당신은 디자인 패턴하지만 헬퍼 방법이없는이 무엇

composite.marshall(<....>); 
0

할 것이라고했다하면.

관련 문제