您当前的位置: 首页 > 

phymat.nico

暂无认证

  • 3浏览

    0关注

    1967博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

设计模式-行为-策略

phymat.nico 发布时间:2017-10-07 20:32:21 ,浏览量:3

#pragma once

#ifndef STRATEGY_H 

#define STRATEGY_H 

class Strategy; 

class Context 
{ 
public: 
	Context(Strategy *pStrategy); 
	~Context(); 
	void ContextInterface(); 

private: 
	Strategy* m_pStrategy; 
}; 

class Strategy 
{ 
public: 
	virtual ~Strategy(){} 
	virtual void AlgorithmInterface() = 0;
	virtual Strategy* SwitchAlgorithm() = 0;
}; 

class ConcreateStrategyA : public Strategy 
{ 
public: 
	virtual ~ConcreateStrategyA(){} 
	virtual void AlgorithmInterface(); 
	virtual Strategy* SwitchAlgorithm();
}; 

class ConcreateStrategyB : public Strategy 
{ 
public: 
	virtual ~ConcreateStrategyB(){} 
	virtual void AlgorithmInterface();
	virtual Strategy* SwitchAlgorithm();
}; 
#endif 
#include "StdAfx.h"
#include "strategy_impl.h"

#include  
#include 
using namespace std;
Context::Context(Strategy *pStrategy) 
: m_pStrategy(pStrategy) 
{ 
} 

Context::~Context() 
{ 
	delete m_pStrategy; 
	m_pStrategy = NULL; 
} 

void Context::ContextInterface() 
{ 
	if (NULL != m_pStrategy) 
	{ 
		m_pStrategy->AlgorithmInterface();

		Strategy* pTmp = m_pStrategy->SwitchAlgorithm();
		delete m_pStrategy;
		m_pStrategy = pTmp;
	} 
} 

void ConcreateStrategyA::AlgorithmInterface() 
{ 
	std::cout             
关注
打赏
1659628745
查看更多评论
0.1115s