设计模式学习一:strategyPattern
#ifndef STRATEGYPATTERN_H_
#define STRATEGYPATTERN_H_
#include<iostream>
using namespace std;
//策略接口
class IStrategy
{
public:
IStrategy(void){};
virtual ~IStrategy(void){};
virtual void Operate(void)=0;
};
//策略一
class CBackDoor:public IStrategy
{
public:
CBackDoor(void);
~CBackDoor(void);
void Operate(void);
};
策略二:
class GivenGreenLight:public IStrategy
{
public:
GivenGreenLight(void);
~GivenGreenLight(void);
void Operate(void);
};
//策略三
class BlockEnemy:public IStrategy
{
public:
BlockEnemy(void);
~BlockEnemy(void);
void Operate(void);
};
//锦囊
class CContext
{
public:
CContext(IStrategy* pStrategy);
~CContext(void);
void Operate(void);
private:
IStrategy* m_pStrategy;
};
#endif
#include "strategyPattern.h"
CBackDoor::CBackDoor(void)
{
}
CBackDoor::~CBackDoor(void)
{
}
void CBackDoor::Operate(void)
{
cout<<"找乔国帮忙,让吴国太给孙权施加压力"<<endl;
}
GivenGreenLight::GivenGreenLight(void)
{
}
GivenGreenLight::~GivenGreenLight(void)
{
}
void GivenGreenLight::Operate(void)
{
cout<<"求吴国太开个绿灯,放行!"<<endl;
}
BlockEnemy::BlockEnemy(void)
{
}
BlockEnemy::~BlockEnemy(void)
{
}
void BlockEnemy::Operate(void)
{
cout<<"孙夫人断后,挡住追兵!"<<endl;
}
CContext::CContext(IStrategy* pStrategy)
{
this->m_pStrategy=pStrategy;
}
CContext::~CContext(void)
{
delete this->m_pStrategy;
}
void CContext::Operate(void)
{
this->m_pStrategy->Operate();
}
#include "strategyPattern.h"
int main()
{
CContext* pContext;
cout<< "----------刚刚到吴国的时候拆第一个----------" <<endl;
pContext=new CContext(new CBackDoor);
pContext->Operate();
delete pContext;
cout<< "----------刘备乐不思蜀了,拆第二个了----------" <<endl;
pContext = new CContext(new GivenGreenLight());
pContext->Operate();
delete pContext;
cout<< "----------孙权的小兵追了,咋办?拆第三个----------" <<endl;
pContext = new CContext(new BlockEnemy());
pContext->Operate();
delete pContext;
return 0;
}
设计模式学习一:strategyPattern的更多相关文章
- 设计模式学习系列6 原型模式(prototype)
原型模式(prototype)用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.允许一个对象再创建另外一个新对象的时候根本无需知道任何创建细节,只需要请求圆形对象的copy函数皆可. 1 ...
- Java-马士兵设计模式学习笔记-总结
<马士兵设计模式学习>学习了以下模式: 1.装饰者模式(例子:水管工,木工) 2.策略模式(例子:老师用职称比大小.学生用成绩比大小) 3.简单工厂模式(例子:VechileFactory ...
- Java设计模式学习资源汇总
本文记录了Java设计模式学习书籍.教程资源.此分享会持续更新: 1. 设计模式书籍 在豆瓣上搜索了一把,发现设计模式贯穿了人类生活的方方面面.还是回到Java与程序设计来吧. 打算先归类,再浏览,从 ...
- python之路,Day24 常用设计模式学习
python之路,Day24 常用设计模式学习 本节内容 设计模式介绍 设计模式分类 设计模式6大原则 1.设计模式介绍 设计模式(Design Patterns) --可复用面向对象软件的基础 ...
- 设计模式学习--复合模式(Compound Pattern)
设计模式学习--复合模式(Compound Pattern) 概述 ——————————————————————————————————————————————————— 2013年8月4日<H ...
- 北京设计模式学习组bjdp.org第7次活动(2013.08.04)回顾会纪要
时间:2013.08.04,9am-7pm 地点:北京龙泉寺(北京凤凰岭风景区内) 参加人数:北京龙泉寺信息中心(20人).北京设计模式学习组(9人) 活动要点: 1)寺院巡礼:义工师兄带领参观寺院. ...
- 设计模式学习--Factory Method
What Factory Method:定义一个创建对象的接口,让子类来决定实例化哪一个类.Factory Method使一个类的实例化延迟到其子类. Why Factory Method是一个比較基 ...
- Java设计模式学习总结
设计模式基础学习总结 这篇总结主要是基于我之前设计模式基础系列文章而形成的的.主要是把重要的知识点用自己的话说了一遍,可能会有一些错误,还望见谅和指点.谢谢 更多详细内容可以查看我的专栏文章:设计模式 ...
- Java设计模式学习记录-模板方法模式
前言 模板方法模式,定义一个操作中算法的骨架,而将一些步骤延迟到子类中.使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤. 模板方法模式 概念介绍 模板方法模式,其实是很好理解的,具体 ...
- Java设计模式学习记录-状态模式
前言 状态模式是一种行为模式,用于解决系统中复杂的对象状态转换以及各个状态下的封装等问题.状态模式是将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象的状态可以灵活多变.这样在客户端使 ...
随机推荐
- Swift - 字符串(String)用法详解
下面对String常用的属性和方法做个总结 1,判断是否为空:isEmpty 1 2 3 var str:String if str.isEmpty{ } 2,获取字符数量:countElements ...
- 5大AR应用窥探移动未来~你见过吗?
摘要:随着可穿戴设备的不断升温,尤其是Google Glass的出现,让AR技术再次走进我们的视线.以下尾随DevStore小编看看这5款优秀的AR应用,有木有闪到你的眼~ 眼下移动开发人员可选的AR ...
- CodeForces 21C Stripe 2 构造题
题目链接: 题目链接:点击打开链接 #include <cstdio> #include <cstring> #include <algorithm> #inclu ...
- [置顶] Embedded Server:像写main函数一样写Web Server
1.传统的JEE Web Server 传统的JEE中,如果我们想要部署一个Web Application,我们需要首先安装一个Container Server,如JBoss,WebLogic,Tom ...
- 利用开源HTML5引擎lufylegend.js结合javascript实现的五子棋人机对弈
前言 本文主要介绍利用开源引擎 lufylegend.js开发基于Html5的游戏--五子棋,主要叙述其详细开发过程. 游戏规则 玩过五子棋的都应该知道五子棋的规则,这里就简单介绍其规则. 1 ...
- find查找大于1M小于10M的文件 $ find . -size +1M -size -10M
查找大于1M小于10M的文件$ find . -size +1M -size -10M
- Gap 锁
14.3.1 InnoDB Locking InnoDB 锁 本章节描述InnoDB 使用的锁类型: Shared and Exclusive Locks Intention Locks Record ...
- hdu 2055 An easy problem (java)
问题: 開始尝试用字符做数组元素.可是并没实用. 在推断语句时把a z排出了. An easy problem Time Limit: 1000/1000 MS (Java/Others) Me ...
- Nginx之http_image_filter_module模块使用
一.安装 #yum install gd-devel # #./configure --prefix=/usr/local/nginx \ # --with-debug \ # --with-http ...
- iOS 开发百问(6)
61.警告"addexplicit braces to avoid dangling else" 所谓"危急的else"是相似这种代码: if(a== 10) ...