C++设计模式
C++
今天看源码了吗
北方工大本 北邮硕 随心情记录一点日常总结
展开
-
C++设计模式之装饰模式
装饰模式:包装模式,通过一种对客户端透明的方式来扩展对象功能,是继承关系的一种替代。装饰模式就是把要附加的功能分别放在单独的类中,并让这个类包含他要装饰的对象,当需要执行时,客户端就可以有选择的,按顺序的使用装饰模式功能包装对象//一般情况下,可以用继承对类进行拓展//装饰模式 可以动态给一个类增加功能class AbstractHero{public: virtual void ShowStatus() = 0;public: int mHP; int mMP;原创 2021-02-20 23:09:35 · 100 阅读 · 0 评论 -
C++设计模式之观察者模式
观察者模式:建立与一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。在观察者模式中,发生改变的对象成为观察目标,而被通知的对象称为观察者。一个观察目标对应多个观察者//抽象的英雄 观察者class AbstractHero{public: virtual void Update() = 0;};class HeroA : public AbstractHero{public: HeroA(){ cout << "英雄A正在打BOSS原创 2021-02-20 22:39:35 · 86 阅读 · 0 评论 -
C++设计模式之命令模式
命令模式:讲一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,命令模式是一种行为性模式。命令模式可以将请求发送者和接受者完全解耦,发送者和接收者之间没有直接引用关系。//协议处理类class HandleClientProtocol{public: void AddMoney(){ cout << "给玩家增加金币" <<endl; } void AddDiamond(){ cout << "给玩家增加钻石"原创 2021-02-19 23:23:42 · 119 阅读 · 1 评论 -
C++设计模式之策略模式
策略模式:定义了一系列算法,并将每一个算法封装起来,而且使它们还可以互相替换。策略模式让算法独立于使用它的客户而独立变化//抽象武器 武器策略class WeaponStrategy{public: virtual void UseWeapon() = 0;};//实现武器细节class Knife : public WeaponStrategy{public: virtual void UseWeapon(){ cout << "使用匕首" <原创 2021-02-18 21:12:26 · 64 阅读 · 0 评论 -
C++设计模式之模板方法模式
模板方法模式:用来对类或对象怎样交互和怎样分配职责进行描述定义一个操作中的算法框架,将一些细节步骤延迟到子类中实现。模板方法模式使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤现有冲咖啡和泡茶两种情况,两种情况的大体框架比较相似,细节不同//模板框架class DrinkTemplate{public: virtual void boilwater() = 0;//煮水 virtual void Brew() = 0;//冲泡 virtual void原创 2021-02-18 20:51:56 · 86 阅读 · 0 评论 -
C++设计模式之适配器模式
适配器模式:将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作现有如下情况:int main(){ vector<int> v; for(int i = 0 ; i < 10; i ++){ v.push_back(i); }//第三个参数为一个函数,观察for_each的源代码可以得知该函数仅可接受一个参数 for_each(v.begin(), v.end(), ??? );}需要的目标函数,该函数需要传入两个参原创 2021-02-18 20:29:43 · 96 阅读 · 0 评论 -
C++设计模式之外观模式
外观模式(Facade):根据迪米特法则,如果两个类不必彼此之间通信,那么这两个类就不应当发生相互作用class TV{public: void On(){ cout << "电视机打开" <<endl; } void Off(){ cout << "电视机关闭" <<endl; }};class Light{public: void On(){ cout &l原创 2021-02-16 22:37:13 · 122 阅读 · 0 评论 -
C++设计模式之代理模式
代理模式:为其他对象提供一种代理以控制对这个对象的访问//提供一种代理来控制对其对象的访问class AbstractCommonInterface{public: virtual void run() = 0;};//真正的系统类class MySystem: public AbstractCommonInterface{public: void run(){ cout << "系统启动" <<endl; }};//负责实现原创 2021-02-16 22:20:17 · 107 阅读 · 0 评论 -
C++设计模式之工厂模式
工厂模式:分为简单工厂模式、工厂模式、抽象工厂模式三个层次简单工厂模式,通过一个工厂类实现别的类的创建缺点:1、增加新的功能时,需要修改源代码,不符合开闭原则2、一个工厂类职责过重,类发生问题时,会影响很多实用使用该工厂的模块//抽象水果class AbstractFruit{public: virtual void Showname() = 0;};//两个具体水果class Apple: public AbstractFruit{public: virtual void Sho原创 2021-02-15 21:28:42 · 164 阅读 · 0 评论 -
C++设计模式之单例模式
实现单例步骤1、构造函数私有化2、增加静态的私有的当前类的指针对象3、提供静态的对外接口,可以让用户获得单例对象单例分为懒汉式和饿汉式懒汉式:只有调用getInstance时才会new一个对象;class Singleton_lazy{private: Singlenton_lazy(){ cout<<"我是懒汉式构造函数"<<endl; } static Singleton_lazy* getInstance(){ if(pSingleton == NU原创 2021-02-15 19:43:35 · 195 阅读 · 1 评论