2009-05-13 9 views
2

전략 패턴을 구현할 때 사용할 전략을 결정하는 코드는 어디에 있습니까? 일부 샘플 의사 코드가 도움이됩니다.전략 패턴 구현

답변

4

그 결정은 전략 패턴을 사용하는 객체의 클라이언트가 취합니다. 예를 들어, 당신이 다른 무기를 공격하는 캐릭터 오브젝트를 가지고 있다고 말할 수 있습니다. 캐릭터가 사용할 무기를 선택할 때 어떤 전략을 사용할지 결정하게됩니다.

캐릭터와 무기 (예제에서 전략 패턴의 두 가지 주요 구성 요소)는 캐릭터와 무기를 사용하는 코드 대신 사용할 전략을 결정하지 않습니다. 단순히 새로운 무기 오브젝트 (RayGunWeapon)를 생성하고이를 캐릭터에게주는 것은 캐릭터의 행동을 변경합니다.

명시 적으로 전략을 선택하는 코드를 작성할 수도 있지만이 패턴의 진정한 가치는 런타임에 수행 할 수 있다는 것입니다.

0

모든 전략을 해결할 때 모두 다릅니다. 때로는 생성 시간에 전략을 해결할 수 있고, 다른 경우에는 실행 시간을 해결할 수 있습니다. 그 대답은 간단합니다.

1

당신이 암시하는 방법에 따라 코드의 위치와 런타임에 컴파일되거나 완료되는지 여부가 결정됩니다.

예를 들어, DI (Dependency Injection)를 사용하면 XML 파일을 변경하여 런타임에 다른 전략을 주입 할 수 있습니다.

AOP를 사용하는 경우 애스펙트 작성 방법에 따라 런타임 또는 컴파일 타임에있게됩니다.

스프링 프레임 워크를 사용한다면 DI를 사용하는 것과 비슷하며 다른 클래스의 배선만큼 쉬운 방법 일 수 있습니다.

서비스 로케이터를 사용하는 경우 다른 DLL을 스와핑하는 것처럼 간단 할 수 있습니다.

기본적으로 전략 패턴을 구현하는 방법은 여러 가지가 있습니다. 몇 가지만 나열 했으므로 여기에 달려있는 설명은 매우 정확합니다.