2014-09-17 3 views
-2

높은 수준의 관점에서 패턴을 사용하면 클래스 계층을 만들지 않고도 다형성 동작을 얻을 수 있습니다. 특정 필드가 country 필드, 또는 멀티 테넌트 (multi-tenant) SaaS는 프로젝트의 tenant 필드 모든 클래스와 함께 (예를 들어, 사용자 클래스를 구별 할 필요가설명 된 패턴의 이름은 무엇입니까?

  1. 데이터 컨테이너 클래스 :

    은 3 개 부분으로 구성).

  2. 컨텍스트 클래스 : 이러한 클래스에는 다양한 유형의 데이터 컨테이너 (예 : 다른 입주자의 논리)에 따라 달라지는 데이터와 논리가 포함됩니다. 모든 가변 소품이 기본값으로 설정된 최상위 Context 클래스와 기본값을 재정의하는 여러 파생 클래스가 있습니다.

  3. 데이터 소비자/프로세서 : 비즈니스 논리 보유자입니다. 데이터 컨테이너와 컨텍스트를 매개 변수로 사용합니다.

    enter image description here

    기본 사용법 :

    Price getPrice(Price price, Context context) { 
        double VAT = context.getVAT() 
        return new Price(
          transform(price.amount + price.amount * VAT, price.currency, context.currency), 
          context.currency 
         ) 
    } 
    ... 
    //and here's the call: 
    Context ctx = getContext(principal.getCountry()) 
    Price priceInUserCurrency = priceCalculator(priceInUsd, ctx); 
    

    여기에 간단한 UML 다이어그램이다 : 우리가 다른를 소개 할 때

제 3 그룹의 시민은 같은 방법이있을 수 있습니다 동일한 클래스의 작은 객체 그룹에 대한 특정 동작 Context에 새로운 메소드를 합당한 기본값으로 추가합니다. 실제 컨텍스트에서 실제 논리를 구현할 수 있습니다. 그런 다음 우리가이 논리를 주입 할 필요가있을 때마다, 우리는 단지 통신문 컨텍스트 방법을 호출합니다.

+0

지역 통화/가격 계산기가 전략 패턴이 아니겠습니까? –

답변

0

Strategy Design Pattern에 대한 설명입니다.

PersonProcessor와 PaymentProcessor 모두에 대해 process()을 수행 할 수 있다는 점이 다릅니다. 아래의 예와 같습니다.

enter image description here

각 개체는 기능의 자신의 사건을 처리하는 방법을 알고있다. 나에게

0

의 설명을

State 디자인 패턴의 개념에 더 가까운 클래스 계층을 생성하지 않고 다형성 (polymorphic)을 얻을 수 있습니다.

enter image description here

그것이 개체 때 내부 상태의 변화의 동작을 변경할 수 있기 때문에

. 개체가 클래스를 변경하는 것처럼 보입니다. 더 나아가 나중에 상태가 변경 될 때도 이전 상태의 속성을 유지할 수 있습니다.

상속 부분에 관해서는 can read more here입니다.

관련 문제