- 浏览: 768842 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
设计原则:封装变化,针对接口编程
Stragety.h
Stragety.cpp
设计原则:封装变化,针对接口编程
Stragety.h
#ifndef STRAGETY_H #define STRAGETY_H #include<iostream> using namespace std; class FlyBehavior{ public: virtual void fly()const=0; }; class FlyWithWings:public FlyBehavior{ public: void fly()const{ cout << "i can fly!" << endl; } }; class FlyNoWay:public FlyBehavior{ public: void fly()const{ cout << "i can't fly!" << endl; } }; class FlyRocketPower:public FlyBehavior{//火箭动力器 public: void fly()const{ cout << "i can fly by rocket power" << endl; } }; class QuackBehavior{ public: virtual void quack()const=0; }; class Quack:public QuackBehavior{ public: void quack()const{ cout << "quack" << endl;//呱呱叫 } }; class Squeak:public QuackBehavior{ public: void quack()const{ cout << "squeak" << endl;//吱吱叫 } }; class MuteQuack:public QuackBehavior{ public: void quack()const{ cout << "can't quack" << endl; } }; //普通鸭 class Duck{ public: Duck(); virtual ~Duck(); virtual void swim()const; virtual void display()const; virtual void performQuack()const; virtual void performFly()const; virtual void setFlyBehavior(FlyBehavior* fb); private: QuackBehavior* quackBhr; FlyBehavior* flyBhr; }; //塑料鸭 class PlasticDuck:public Duck{ public: PlasticDuck(); ~PlasticDuck(); void swim()const; void display()const; void performQuack()const; void performFly()const; void setFlyBehavior(FlyBehavior *fb); private: QuackBehavior* quackBhr; FlyBehavior* flyBhr; }; #endif // STRAGETY_H
Stragety.cpp
#include"Stragety.h" Duck::Duck(){ quackBhr = new Quack; flyBhr = new FlyNoWay; } Duck::~Duck(){} void Duck::swim()const{ cout << "duck is swimming!" << endl; } void Duck::display()const{ cout << "i'm a duck" << endl; } void Duck::performFly()const{ flyBhr->fly(); } void Duck::performQuack()const{ quackBhr->quack(); } void Duck::setFlyBehavior(FlyBehavior* fb){ flyBhr = fb; } PlasticDuck::PlasticDuck(){ quackBhr = new MuteQuack; flyBhr = new FlyNoWay; } PlasticDuck::~PlasticDuck(){} void PlasticDuck::display()const{ cout << "i am a plastic duck" << endl; } void PlasticDuck::swim()const{ cout << "plastic duck is swimming" << endl; } void PlasticDuck::performFly()const{ flyBhr->fly(); } void PlasticDuck::performQuack()const{ quackBhr->quack(); } void PlasticDuck::setFlyBehavior(FlyBehavior *fb){ flyBhr = fb; } int main() { Duck *d = new Duck; PlasticDuck *p = new PlasticDuck; cout << "-----common duck-----:" << endl; d->display(); d->swim(); d->performFly(); d->performQuack(); cout << "-----plastic duck-----:" << endl; p->display(); p->swim(); p->performFly(); p->performQuack(); cout << "-----after add rocket power-----:" << endl; p->setFlyBehavior(new FlyRocketPower); p->display(); p->performFly(); } -----common duck-----: i'm a duck duck is swimming! i can't fly! quack -----plastic duck-----: i am a plastic duck plastic duck is swimming i can't fly! can't quack -----after add rocket power-----: i am a plastic duck i can fly by rocket power
发表评论
-
桥接模式(Bridge)
2014-09-26 15:34 819桥接模式:将抽象与实现解耦,使得两者可以独立地变化,抽象部分的 ... -
访问者模式(Visitor)
2014-08-03 13:59 837访问者模式(Visitor),表示一个作用于某对象结构中的各元 ... -
解释器模式(interpreter)
2014-08-03 13:55 679解释器模式(interpreter),给定一个语言,定义它的方 ... -
享元模式(Flyweight)
2014-08-02 09:31 636享元模式(Flyweight):运用共享技术有效地支持大量细粒 ... -
中介者模式(Mediator)
2014-08-02 09:26 444中介者模式(Mediator):用一个中介对象来封装一系列的对 ... -
职责链模式(Responsibility)
2014-07-31 20:36 586职责链模式(Chain of Responsibility): ... -
合成/聚合利用原则
2014-07-29 20:56 589合成/聚合利用原则:尽量使用合成/聚合,尽量不要使用类继承 ... -
组合模式(Composite)
2014-07-27 10:15 432组合模式(Composite):将对象组合成树形结构以表示'部 ... -
备忘录模式(Memento)
2014-07-26 09:09 561备忘录(Memento):在不破坏封装性的前提下,捕获一个对象 ... -
事件委托(delegate)
2014-07-23 20:53 596委托机制的本质就是调用成员函数的函数指针,实现回调 委托就是 ... -
建造者模式(Builder)
2014-07-23 20:45 566建造者模式(Builder):将一个复杂对象的构建与它的表示分 ... -
外观模式(facade)
2014-07-20 09:31 632外观模式(facade):为子系统中的一组接口提供一个一致的界 ... -
迪米特法则
2014-07-19 18:23 407迪米特法则:如果两个类不必彼此直接通信,那么这两个类就不应当发 ... -
原型模式
2014-07-16 20:34 512原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创 ... -
里氏代换
2014-07-12 09:43 339里氏代换:一个软件实体如果使用的是一个父类的话,那么一定适用于 ... -
依赖倒转
2014-07-12 09:39 396依赖倒转:抽象不应该依赖细节,细节应该依赖抽象,说白了就是针对 ... -
开放-封闭原则
2014-07-12 09:33 563开放-封闭原则:是说软件实体(类,模块,函数等等)应该可以扩展 ... -
单一职责
2014-07-12 09:26 561单一职责原则(SRP),就一个类而言,应该仅有一个引起它变化的 ... -
MVC
2011-07-21 17:32 1015MVC是一种复合模式,结合了观察者,策略模式和组合模式。 要 ... -
代理模式(Proxy)
2011-07-19 15:47 930代理模式:为另一个对象提供一个替身或占位符以控制这个对象的访问 ...
相关推荐
策略模式的UML类图包括Context、Stragety、ConcreteStrategyA、ConcreteStrategyB等类别。 Context类是用来操作策略的上下文环境。Stragety是策略的抽象。ConcreteStrategyA、ConcreteStrategyB是具体的策略实现。 ...
informatica update strategy,数字值对应的含义
HanLP: Han Language Processing 汉语言处理包 HanLP是由一系列模型与算法组成的Java工具包,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。...
用户故事是在该项目的Stragety Plane阶段定义的。 作为用户,我想: 购买手工陶瓷和艺术品。 了解品牌背后的人。 能够了解有关该品牌正在发生的事情和新变化的更多信息。 能够在网站上进行安全的购买。 能够...
内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
深圳建设施工项目安全生产奖惩管理制度
离散数学课后题答案+sdut往年试卷+复习提纲资料
04741计算机网络原理 2018(尚德).pdf 13年试题(2套).pdf 2015年10月自考计算机网络原理04741试题及答案解析.docx 2021年4月自考04741计算机网络原理真题及答案.docx 2021年4月自考04741计算机网络原理试卷.bak.docx 计算机网络原理 课后题答案 全 李全龙版 自考04741.zip.zip 计算机网络原理课件 计算机网络原理课件.rar
C++实现rpc,全程手写
前端拿到的列表数据里id都一样的处理办法.txt
最新仿720云全景制作源码|krpano仿720云全景网站源码(新增微信支付+打赏+场景红包等)是一款基于php+mysql开发制作的全景在线制作网站源码,包含全景图片,全景视频等。数据存储全部存于OSS云端或本地,源码完全开源可自行二次开发。 环境要求:PHP5.5.X+MYSQL5.6.X+伪静态 熟悉linux系统推荐使用LAMP,web服务器最好使用apache,不要使用nginx(发布大全景图需要时间可能需要20多分钟, nginx超时机制不好控制)。 Windows系统推荐使用phpstudy。Liunx推荐宝塔控制面板apache 前端为HTML5开发,自适应手机版! 1、支持VR虚拟现实、全景视频、环物全景、说一说、点赞评论、重力感应、智能视频嵌入、场景切换热点、加载进度条、 地图导航、光晕flash特效、物体全景嵌入、场景自播、场景解说、雷达导航等业内前沿功能。 2、支持windows、Linux、Mac、安卓、IOS等几乎所有的系统观看。支持CDN图片转存,极大的减轻的服务器流量费用。 3、支持用户权限分配。方便会员制收费。
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
环境监测系统源代码全套技术资料.zip
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
四轮转向系统横摆角速度控制simulink仿真模型,利用滑模控制算法,基于八自由度车辆模型,控制有比较好的效果,附参考说明。
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
02142数据结构导论历年真题及答案(2012-2018共13套).rar 02331数据结构历年真题共267页2009.10-2019.4.rar 24数据结构201704_8.pdf 25数据结构201710_10.pdf 26数据结构201804_11.pdf 27数据结构201810_9.pdf 全国2021年04月高等教育自学考试02331数据结构试题及答案.docx 全国2022年04月高等教育自学考试02331数据结构试题及答案.docx 数据结构-课件.rar 第l六讲.ppt 第一讲.ppt 第七讲.ppt 第三讲.ppt 第九讲.ppt 第二讲.ppt 第五讲.ppt 第八讲.ppt 第四讲.ppt
验收确认单表格.docx
内存搜索工具(易).rar
饮食管理系统项目源代码全套技术资料.zip