문제

각 제품의 경우 할인, 판매 할인, 상인의 보너스, 월별 할인 등과 같은 관련 비용 계산기가 있습니다. 향후 더 많은 비용 계산기가 추가됩니다.

우리는 각 비용 계산에 대한 구체적인 제품 클래스와 많은 데코레이터가 있습니다. 계산기는 제품 판매자 ID, 카테고리 ID, 색상 등과 같은 제품의 속성에 따라 계산을 적용하기로 결정했기 때문에 모든 제품은 모든 계산기를 사용해야합니다.

그리고 우리 시스템에는 계산 해야하는 수백만 개의 제품이 있습니다. 따라서 우리는 장식 된 계산기를 더 잘 캐시합니다. 런타임에 각 제품 엔티티를 장식하는 데 비용이 많이 들기 때문입니다. 그러나 이것은 데코레이터 패턴으로 어렵습니다. 우리 상황 에서이 패턴을 사용하는 것은 냄새처럼 보입니다.

당신은 무엇을 제안합니까? 우리는 데코레이터, 전략 또는 책임 체인 패턴을 사용해야합니까? 또는 패턴 없음.

도움이 되었습니까?

해결책

계산기는 제품 판매자 ID, 카테고리 ID, 색상 등과 같은 제품의 속성에 따라 계산을 적용하기로 결정했기 때문에 모든 제품은 모든 계산기를 사용해야합니다.

모든 제품이 모든 데코레이터를 사용해야한다면 패턴으로부터 어떤 혜택을 얻지는 않습니다. 이것은 새 데코레이터를 구현하는 경우 모든 기존 엔터티를 해당 새 데코레이터를 사용하도록 업데이트해야한다는 것을 의미합니까?

데코레이터는 필요한 경우에만 제품에 적용해야하며 필요한 데코레이터 만 적용해야합니다.

데코레이터 내에서 결정을 제거해야한다고 생각합니다. 다른 것은 데코레이터를 적용할지 여부를 결정해야하며,이 경우 적절한 데코레이터에 제품을 감싸고 있습니다. 이렇게하면 제품이 데코레이터에 싸인 경우 그 데코레이터가 제품에 영향을 미치고 있습니다.

다른 팁

전략 패턴에서 객체의 의도가 바뀝니다.

따라서 전략이 좋은 선택이라고 생각합니다.

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