设计模式
文章平均质量分 64
XueP.H
这个作者很懒,什么都没留下…
展开
-
装饰者设计模式
1、定义动态地给一个对象增加一些额外的职责。就增加功能而言,装饰器模式比生产子类更为灵活。—— 《设计模式》GoF2、代码实现代码背景:普通员工有销售奖金,累计奖金,部门经理除此之外还有团队奖金;后面可能会添加环比增长奖金,同时可能针对不同的职位产生不同的奖金组合;#include <iostream>using namespace std;//封装被计算奖金的人员信息class Context {public: bool isMgr; // User us原创 2021-12-14 21:47:24 · 253 阅读 · 0 评论 -
责任链设计模式
1、定义使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 ——《设计模式》GoF2、代码实现代码背景:请求流程,1 天内需要主程序批准,3 天内需要项目经理批准,3 天以上需要老板批准;#include <string>//上下文类用来封装:请假信息class Context {public: std::string name; int day;};//抽象处理类原创 2021-12-14 21:12:09 · 945 阅读 · 0 评论 -
工厂设计模式和抽象工厂设计模式
工厂设计模式1、定义定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟到子类。 ——《设计模式》GoF2、代码实现代码背景:实现一个导出数据的接口,让客户选择数据的导出方式#include <string>// 实现导出数据的接口, 导出数据的格式包含 xml,json,文本格式txt 后面可能扩展excel格式csvclass IExport {public: virtual bool Export(const原创 2021-12-14 18:42:25 · 317 阅读 · 0 评论 -
单例设计模式
1、定义保证一个类仅有一个实例,并提供一个该实例的全局访问点。 ——《设计模式》GoF单例生命周期:从创建到进程结束一直存在版本一class Singleton { public: static Singleton * GetInstance() { if (_instance == nullptr) { _instance = new Singleton(); //这里是new出来的,内存是在堆区上,由于析构函数私有化了,无法释放该原创 2021-12-14 17:06:20 · 1064 阅读 · 0 评论 -
策略设计模式
1、定义定义一系列算法,把它们一个个封装起来,并且使它们可互相替换。该模式使得算法可独立于使用它的客户程序而变化。 ——《设计模式》 GoF2、代码实现代码背景:某商场每个节假日有固定促销活动,现在国庆到了,为了加大促销力度,现提升国庆节促销活动规格(节日是变化的,每年到一个节日就需要调整今年的促销策略,所以每个节日的促销策略是经常要变的)class Context { //上下文:在开发中根据上下文作出不同的策略调整 //...};//促销策略父类class ProState原创 2021-12-14 11:49:09 · 358 阅读 · 0 评论 -
观察者设计模式
1、定义定义对象间的一种一对多(变化)的依赖关系,以便当**一个对象(Subject)**的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。——《 设计模式》 GoF2、代码实现代码背景:气象站发布气象资料给数据中心,数据中心经过处理,将气象信息更新到两个不同的显示终端(A 和B)#include <vector>//定义一个显示接口,用于规范显示对象,便于扩展class IDisplay {public: virtual void Show(float t原创 2021-12-14 11:15:38 · 546 阅读 · 0 评论 -
模板方法设计模式
1、定义定义一个操作中的算法的骨架 ,而将一些步骤延迟到子类中。 Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 ——《 设计模式》 GoF算法的骨架:固定的流程延迟到子类中:使子类也具有对应的流程,也就是继承下来重定义该算法的某些特定步骤:重写虚函数2、代码实现代码背景:某个品牌动物园,有一套固定的表演流程,但是其中有若干个表演子流程可创新替换,以尝试迭代更新表演流程#include <iostream>using nam原创 2021-12-14 10:15:32 · 914 阅读 · 0 评论 -
设计模式原则
1、设计模式概述简单来说设计模式就是应对固定场景的写代码”套路“。核心是解耦合,让代码后期维护时变得更加容易,有一个形象的例子描述设计模式:一个房间里有一只爱动的猫,如何保持房间的整洁?答案是把猫关进笼子里,也就是所说的解耦合,将变化点隔离。如何学习设计模式?分析业务需求,找到变化点和稳定点,将变化点隔离出来先满足设计模式原则,再慢慢迭代出设计模式2、设计模式原则1)依赖倒置高层模块不应该依赖低层模块,两者都应该依赖抽象(高低层模块变动时,双方不影响)具体实现应该依赖于抽象(用接原创 2021-12-13 21:40:05 · 307 阅读 · 0 评论