2012-12-31 5 views
1

일부 디자인 도움이 필요합니다. 클래스가 있습니다. 여러 가지 동작을 구현할 수있는 우주선이라고 부르 자고합니다. 각 비헤이비어가 지원하는 작업을 선언하는 인터페이스를 정의했습니다. 지금까지는 고전적인 전략 패턴이었습니다.컨텍스트에서 메서드를 호출하는 파생 된 알고리즘을 사용한 전략 패턴

그러나 구현 된 전략은 컨텍스트 클래스에서 동작과 메서드를 호출 할 수 있어야합니다. 나는 인터페이스 자체를 캡슐화 된 알고리즘에 전달하는 방법을 생각해 보았다.

이 방법이 최선의 방법입니까? 그렇지 않다면 무엇을 권하겠습니까?

enter image description here

+2

나는 이것이 Dependency Injection을 사용하는 좋은 방법이라고 말할 수 있습니다. 그런 식으로 컨텍스트 유형을 추적 할 필요가 없으며 작업/메서드를 컨텍스트 클래스 개체에서 사용할 수 있도록해야합니다. – ryadavilli

+1

Context 클래스에 대한 자세한 정보를 제공 할 수 있습니까? 아니면 SpaceShip 유추에 포함 시키시겠습니까? –

답변

1

나에게 잘 할 것 같아요. 한 가지 고려해야 할 것은 행동 클래스 (들)의 메소드 (들)을 많이 전달하지 않는 것입니다. 예를 들어 우주선에 "엔진 동작"이있는 경우 전체 우주선이 아닌 "연료 탱크"와 "구동 장치"만 통과하십시오.

1

당신의 전략에 대한 컨텍스트를 필요에 따라, 당신이 만드는 고려할 수뿐만 아니라, 그래서 당신의 전략이 컨텍스트에 연결하지 않는 것이 옵저버 패턴을 사용하여 이벤트 기반.

전략으로 인해 상황에 변화가 생기는 경우가있을 수 있습니다. 이러한 전략은 일부 중개자 (또는 귀하의 컨텍스트 자체)가 구독하는 이벤트 일 수 있습니다.