래퍼

2009-12-16 6 views
0

나는 내가 다음과 같은 옵션을 생각하고, 타사 프레임 워크를 통해 얇은 래퍼를하고있는 중이 야 : 완전히 프레임 워크를 포장래퍼

  1. 을되도록 래퍼의 클라이언트 래핑 된 프레임 워크를 인식하지 못합니다. 그렇다면 프레임 워크에서 일부 클래스를 래핑해야 함을 의미합니다. 이 방법은 래퍼의 클라이언트와 래핑 된 프레임 워크간에 의존성이 없습니다.

  2. 프레임 워크의 일부 클래스를 래퍼의 클라이언트에 공개하면 클라이언트가 래핑 된 프레임 워크를 참조해야합니다.

귀하의 의견은 무엇입니까?

+0

목적은 무엇입니까? 사용중인 특정 프레임 워크에서 클라이언트를 분리하거나 헬퍼와 래퍼를 추가하고 클라이언트가 프레임 워크 작업에 유용한 공통적 인 숙어 및 패턴을 캡슐화하려면? – itowlson

+0

@itowlson : 도우미와 래퍼를 추가하십시오. – Benny

답변

1

나는 한 걸음 더 나아가서 프레임 워크와 독립적 인 기능을 작성하고 "이상적인"인터페이스를 만듭니다.

그런 다음 기능과 프레임 워크 사이에 다리를 만드십시오.

래퍼가 프레임 워크의 일대일 번역 인 경우 누군가의 프레임 워크를 래핑하는 것이 반드시 큰 이익이되는 것은 아닙니다. 바이너리 종속성은 제거 하겠지만 프레임 워크와 개념적으로 결합되므로 프레임 워크 외부에서 코드를 사용하기가 더 어려워집니다.

+0

당신은 교량의 예를 친절하게 줄 수 있습니까? – Benny

+0

"이상적인"인터페이스와 실제로 프레임 워크에서 요구하는 인터페이스 사이를 변환하는 클래스 (또는 일련의 클래스). – kyoryu

+0

그래서 프록시와 비슷합니다. – Benny

1

래퍼의 목적이 클라이언트 응용 프로그램을 타사 프레임 워크와 독립적으로 만드는 것이라면 래퍼는 클라이언트 응용 프로그램에서 사용할 프레임 워크의 모든 측면을 포함해야한다고 말하고 싶습니다. 그렇게하면 제 3 자 구성 요소가 클라이언트에 영향을 미치지 않고 계속 스왑 아웃 될 수 있습니다 (래퍼의 인터페이스가 다른 제 3 자 구성 요소에 "적합"하도록 일반적으로 설계되었다고 가정).

1

당신은 프레임 워크의 목적과 "변동성"을 염두에 두어야합니다. 그러나 일반적으로 나는 그것을 완전히 감쌀 것입니다. 이것은 훨씬 더 많은 유연성과 더 나은 캡슐화를 제공합니다 (예를 들어 예외를 생각하십시오).