문제

나는 할인 된 (10% 디스크)와 비스듬한 (0%)의 두 가지 유형의 제품을 가지고 있습니다. 각각은 15%의 판매 세를 유치하는 수출 한 지역 제품 / 수출 가능 제품 일 수 있습니다.

이 시나리오를 모델링하는 가장 좋은 방법은 무엇입니까? 나는 절대적인 초보자에 대한 S/W 디자인이기 때문에 아이디어가 매우 제한되어 있습니다. 1. 4 가지 다른 제품 하위 유형을 갖기 위해 2. 전략 패턴을 사용하고 4 가지 전략이 있습니다.

위의 옵션이나 다른 옵션을 사용하여 효과적으로 모델링 할 수있는 방법을 제안 할 수 있습니까?

도움이 되었습니까?

해결책

클래스는 행동 세트를 구별합니다. 그러므로 그러한 용어로 당신의 부서를 살펴 보겠습니다.

  • 할인 된/비 이식 된 행동은 행동의 변화라는 주장이 이루어질 수 있지만,이를 단일 행동으로 줄이는 것은 사소한 일입니다. 모든 제품은 할인이 있지만 할인 금액은 비 이식되지 않은 제품에서 0%입니다. . 이것은 별도의 클래스가 아닌 제품 (할인 _amount)의 속성 일뿐입니다.

  • 로컬/수출 가능은 뚜렷한 행동을 가질 수 있습니다. 유일한 차이점은 제품을 국제적으로 배송 할 수 있는지 여부라는 것입니다. 간단한 부울 깃발은 이러한 차이를 적절하게 처리해야합니다. 반면에 수출 가능한 제품이 현지 제품 (예 : 세관 요구 사항 및 절차 기록)이 지원하지 않는 행동이 필요하다면, 수출 가능 제품의 하위 클래스 (수출 가능한 제품 동작이 현지의 대체 세트 인 경우 제품 행동) 또는 로컬 제품 및 수출 가능한 제품 서브 클래스를 사용하여 추상 제품 클래스를 만드십시오 (현지 제품에 수출 가능한 제품이 지원하지 않는 행동이있는 경우).

다른 팁

물건을 간단하게 유지하려면 할인이 실제로 하위 유형이어야하는지 또는 제품의 속성이 될 수 있는지, "비정상적인"할인이 0 %의 할인이 있는지 스스로에게 물어보십시오.

나는 이것을 할 것이다 :

이름, 설명, 유형 등과 같은 제품의 기본 속성이있는 "제품"이라는 클래스가 있습니다.

기본 "제품"클래스는 "할인 된"이라는 속성을 가질 수 있습니다. 할인되지 않은 경우 및 할인 값에 대해서는 0이 될 수 있습니다. 이렇게하면 동일한 공식이 항상 적용되므로 계산을 단순화하는 데 도움이됩니다. 단지 할인이 0이라는 경우에만 적용됩니다.

그런 다음 "수출 가능 제품"과 "로컬 제품"두 가지 클래스를 가질 수 있으며 "제품"클래스에서 상속됩니다.

나는 아마도 할인 된/nondiscounted가 전혀 유형의 제품이되어서는 안된다고 제안합니다. 대신 부모 제품에 두 개의 하위 유형과 '할인'속성/필드가 있습니다. 그런 다음 각 제품은 효과적으로 할인을받을 수 있습니다. 이것은 또한 10%로 고정되지 않은 할인을 허용합니다.

나는 이것을 위해 상속 (즉, 하위 타이핑)을 피할 것입니다.

대신, 나는 할인 된 / 비정규 및 지역 / 수출 가능 제품에 대한 열거를 정의했다. 그런 다음 각 제품 클래스는 단순히 유형을 나타내는 각각의 특성을 갖습니다.

그런 다음 별도의 클래스 (예 : PRICENCALCUTOR)에서 제품의 인스턴스를 수용하는 계산 방법 (정적)을 정의하십시오. 이 방법은 단순히 열거 특성을 검사하고 계산에 필요한 백분율 값을 적용합니다.

이것은 제품 자체에서 가격 계산을 완전히 분리하고 때로는 복잡한 가격 계산을 한 위치에서 유지할 수 있습니다. 시간이 지남에 따라 가격 계획이 변경됨에 따라이 접근 방식은 쉽게 유지 관리 가능하고 테스트 할 수 있습니다.

나는 모든 것을 피하고 두 가지 속성을 가지고 있습니다. discount 그리고 local

(가격)가 변경되는 것이 하나뿐이므로 즉시 계산할 수 있습니다 (할인 => price * .9, 내보내기 => price * .85 - 또는 둘 다 => 내보내기 및 할인 => price * .9 * .85)

상속은 특히 유용합니다 유형에 따라 사물이 다릅니다.

예를 들어, 할인 및 세금 및 배송 방법이 모두 품목 유형에 따라 다르면 상속 및 서브 클래싱을 고려해야 할 때입니다 (이 항목의 하위 유형은이 세금 과이 할인 및이 할인 및 이 배송 ").

반면에 유형에 따라 한 가지만 변하는 경우, 여러 유형을 가질 가치가 있는지 (즉, 하위 클래스가있는 기본 유형) 또는 그 분산이 단일 유형으로 더 간단하게 모델링 될 수 있는지 여부는 덜 분명합니다. 속성 값 (예 : "할인 _percentage")이 있습니다.

이렇게 할 때 모두 제품에 부울 두 개만 있으면 필요한 행동이 가장 좋은 솔루션입니다. 야그니.

그러나 나는 그것이 더 큰 문제의 작은 부분 일 뿐이라고 두려워합니다. 그리고 당신은 스스로에게 물어봐야합니다 : 제품을 제품으로 만드는 것 (단일 책임). 과세 및 할인 가능성은 아마도 두 가지 다른 문제이므로 제품에는 두 가지 전략이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top