C++디자인 모드 의 전략 모드(Strategy)

전략 모델 은 서로 다른 알고리즘 의 논리 추상 인 터 페 이 스 를 한 종류 에 봉 하여 조합 과 다 중 결합 방식 으로 서로 다른 알고리즘 을 구체 적 으로 실현 한다.
역할.
전략 모델 은 일련의 알고리즘 을 정의 하 는 방법 이다.Strategy 클래스 는 Context 로 일련의 재 활용 가능 한 알고리즘 이나 행 위 를 정 의 했 고 모든 알고리즘 은 같은 방식 으로 호출 되 어 알고리즘 류 간 의 결합 을 감소 했다.
클래스 보기

이루어지다

class Strategy
{
public:
 ~Strategy();
 virtual void AlgrithmInterface()=0;
protected:
 Strategy();
};

class ConcreteStrategyA : public Strategy
{
public:
 ConcreteStrategyA();
 ~ConcreteStrategyA();
 virtual void AlgrithmInterface();
};

class ConcreteStrategyB : public Strategy
{
public:
 ConcreteStrategyB();
 ~ConcreteStrategyB();
 virtual void AlgrithmInterface();
};

class Context
{
public:
 Context(Strategy*);
 ~Context();
 void DoAction();
private:
 Strategy* _strategy;
};

int main()
{
 //  A B   
 Strategy* pStra = new ConcreteStrategyA();
 Context* pCon = new Context(pStra);
 pCon->DoAction();

 pStra = new ConcreteStrategyB();
 pCon = new Context(pStra);
 pCon->DoAction();

 return 0;
}
Strategy 모델 과 Template 모델 의 근본 적 인 차 이 는 Strategy 가 조합 방식 을 통 해 알고리즘(실현)의 이 구 조 를 실현 하 는 것 이 고 Template 모델 은 계승 방식 을 취한 다.이 두 모델 의 차이 도 계승 과 조합 두 가지 인터페이스 재 활용 을 실현 하 는 방식 의 차이 이다.
Strategy 모델 과 Bridge 모델 의 차 이 는 행위 모델 이 고 하 나 는 대상 의 구조 모델 이다.Strategy 는 서로 다른 알고리즘 과 의 인터페이스 패 키 징 실현 에 중심 을 두 는데 그 중심 은 알고리즘 행위 의 실현 이 고 보통 알고리즘 의 확장 이다.한편,Bridge 는 대상 과 실현 의 분 리 를 더욱 중시 하고 대상 과 실현 은 각각 확장 할 수 있 으 며 이들 은 서로 영향 을 주지 않 는 다.Strategy 모델 에 비해 Bridge 모델 은 표현 해 야 할 내용 이 더 많 고 구조 도 복잡 하 며 Strategy 모델 은 Bridge 모델 의 일부 실현 방식 과 같다.
응용 장면
서로 다른 알고리즘 과 행 위 를 선택 할 수 있 고 모든 알고리즘 과 행 위 는 하나의 유형 에 대응 할 수 있 으 며 기능 이 각각 다르다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기