높은 수준의 관점에서 패턴을 사용하면 클래스 계층을 만들지 않고도 다형성 동작을 얻을 수 있습니다. 특정 필드가 country
필드, 또는 멀티 테넌트 (multi-tenant) SaaS는 프로젝트의 tenant
필드 모든 클래스와 함께 (예를 들어, 사용자 클래스를 구별 할 필요가설명 된 패턴의 이름은 무엇입니까?
데이터 컨테이너 클래스 :
은 3 개 부분으로 구성).
컨텍스트 클래스 : 이러한 클래스에는 다양한 유형의 데이터 컨테이너 (예 : 다른 입주자의 논리)에 따라 달라지는 데이터와 논리가 포함됩니다. 모든 가변 소품이 기본값으로 설정된 최상위 Context 클래스와 기본값을 재정의하는 여러 파생 클래스가 있습니다.
데이터 소비자/프로세서 : 비즈니스 논리 보유자입니다. 데이터 컨테이너와 컨텍스트를 매개 변수로 사용합니다.
기본 사용법 :
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
에 새로운 메소드를 합당한 기본값으로 추가합니다. 실제 컨텍스트에서 실제 논리를 구현할 수 있습니다. 그런 다음 우리가이 논리를 주입 할 필요가있을 때마다, 우리는 단지 통신문 컨텍스트 방법을 호출합니다.
지역 통화/가격 계산기가 전략 패턴이 아니겠습니까? –