2013-10-27 7 views
0

저는 Strategy Design Pattern을 사용하여 2 가지 구체적인 전략을 구현하고 있습니다. 두 번째는 전략 디자인 패턴을 사용하면서 처음부터 코드를 많이 재사용합니다. 나는 이것이 전략 디자인 패턴의 이점을 "파괴"하는지, 아니면 이것이 어떤 차이를 가져올 지 궁금하다. 추상 클래스가 전략 인터페이스를 구현하는 것과 같이 더 나은 방법이 있을까요? 두 가지 전략이 추상 클래스에서 상속 받습니까?전략 디자인 패턴의 서로 다른 구체적인 전략 간의 종속성은 무엇입니까?

이 질문을 보는 또 다른 방법은 다음과 같습니다. 전략 디자인 패턴의 장점은 다른 전략에 영향을주지 않으면 서 다른 전략을 추가하고 제거 할 수 있다는 사실에서 비롯된 것입니까? 그렇다면 코드를보다 복잡한 구체적인 전략으로 복사해야합니까? 그들은 특정 키워드에 얼마나 유사에 따라

  1. 첫 번째 종류의 모든 에세이 : 나의 특별한 경우


    , 나는 두 개의 서로 다른 에세이 분류기 전략을 구현하고있다.

  2. 두 번째 전략은 모든 저자를 먼저 정렬 한 다음 키워드와 얼마나 유사한 지에 따라 각 저자의 에세이를 정렬하는 첫 번째 구체적인 전략을 호출합니다.

이 적절한 디자인입니까?

+0

간단한 전략을 복잡한 전략으로 통합하는 것은 어떻습니까? – raina77ow

+0

질문을 편집하여 질문 한 내용을 명확히했습니다. 두 번째 단락에 대한 대답은 전략을 모으는 것이 합리적인지 여부를 결정합니다. – insertjokes

+2

두 전략 사이의 차이를 줄이기 위해 작곡을 사용하는 것이 더 쉽다고 생각합니다. 어떻게 수행되는지 보려면 [이 답변] (http://stackoverflow.com/questions/13842420/combining-composite-and-strategy)을 확인하십시오. – raina77ow

답변

0

. 나는 이것이 전략 디자인 패턴의 이점을 "파괴"하는지, 아니면 이것이 어떤 차이를 가져올 지 궁금하다.

코드 복사가 잘못되었습니다. 한 곳에서 해결해야하는 경우, 수정 사항을 모든 사본에 복사하는 것을 잊어 버릴 가능성이 있습니다. 이 난장판을지지해야하는 가난한 영혼을 생각해보십시오! 전략은 다음 공통 코드가있는 경우

당신도

  • 공통 코드를 삽입, 유틸리티 클래스에 공통 코드를 넣어/집계를 추가 모두 구현의 구성원으로 일반적인 클래스를 추가 할 수 있습니다 두 클래스의 구현에서이 클래스를 상속합니다.

집계는 일반적으로 상속보다 우선합니다.