又是一个情人节,帅哥们正用各种办法取悦自己的女朋友或者老婆,买花、买包、吃顿烛光晚餐等等,而此刻我对着屏幕,敲击着无趣的26个字母...
想到上面哄女孩子开心的各种形式,突然想到一种设计模式---策略模式。各位帅哥的目的很明确就是让女孩子高兴,那么怎么让他们高兴那?每人选择针对自己适合的方法策略...
策略模式就是很好管理各种方法策略,根据需求灵活替换扩展。比如排序算法,方法有很多种,冒泡、快排、希尔排序等,这些算法都是为了让一组无序数字变为有序,而算法在不同场景下选择不同的算法,这个时候策略模式就能够方便我们解决这个问题。就以情人节哄女孩子开心写一个策略模式...
#pragma once
class CCoaxGirlStrategy
{
public:
~CCoaxGirlStrategy();
public:
virtual void Coax() = 0;
protected:
CCoaxGirlStrategy();
};
#include "goaxgirlstrategy.h"
CCoaxGirlStrategy::CCoaxGirlStrategy()
{
}
CCoaxGirlStrategy::~CCoaxGirlStrategy()
{
}
#pragma once
#include "goaxgirlstrategy.h"
class CBuyFlowerStrategy :
public CCoaxGirlStrategy
{
public:
CBuyFlowerStrategy();
~CBuyFlowerStrategy();
public:
void Coax();
};
#include "buyflowerstrategy.h"
#include <iostream>
CBuyFlowerStrategy::CBuyFlowerStrategy()
{
}
CBuyFlowerStrategy::~CBuyFlowerStrategy()
{
}
void CBuyFlowerStrategy::Coax()
{
std::cout << "Buy Flower Coax My GirlFriend" << std::endl;
}
#pragma once
#include "goaxgirlstrategy.h"
class CEatFoodStrategy :
public CCoaxGirlStrategy
{
public:
CEatFoodStrategy();
~CEatFoodStrategy();
public:
void Coax();
};
#include "eatfoodstrategy.h"
#include <iostream>
CEatFoodStrategy::CEatFoodStrategy()
{
}
CEatFoodStrategy::~CEatFoodStrategy()
{
}
void CEatFoodStrategy::Coax()
{
std::cout << "Eat Food Coax My GirlFriend" << std::endl;
}
#pragma once
#include "goaxgirlstrategy.h"
class CGoaxGirlContext
{
public:
CGoaxGirlContext();
~CGoaxGirlContext();
void SetStrategy(CCoaxGirlStrategy* pStrategy);
void CoaxGirl() const;
private:
CCoaxGirlStrategy* m_pStrategy;
};
#include "goaxgirlcontext.h"
CGoaxGirlContext::CGoaxGirlContext()
{
m_pStrategy = 0;
}
CGoaxGirlContext::~CGoaxGirlContext()
{
if (m_pStrategy)
{
delete m_pStrategy;
m_pStrategy = 0;
}
}
void CGoaxGirlContext::SetStrategy(CCoaxGirlStrategy* pStrategy)
{
if (m_pStrategy)
{
delete m_pStrategy;
m_pStrategy = 0;
}
m_pStrategy = pStrategy;
}
void CGoaxGirlContext::CoaxGirl() const
{
if (m_pStrategy)
{
m_pStrategy->Coax();
}
}