![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++之模式
zl908760230
遇到问题首先得学会自己找答案!
展开
-
(1)单例模式
一个类只生成唯一的实例对象。实现步骤:1)构造函数私有化2)提供一个全局的静态方法(全局访问点)3)在类中定义一个静态指针,指向本类的变量的静态变量指针懒汉式:#includeusing namespace std;#define NULL 0// 单例模式---懒汉式class singelTon {private: singelTon() {原创 2017-04-01 17:12:42 · 232 阅读 · 0 评论 -
(2)简单工厂模式
#includeusing namespace std;class Car {public: virtual void get() = 0;};class BYD:public Car {public: void get() override { cout << "比亚迪" << endl; }};class VW :public Car {public: void原创 2017-04-02 11:19:52 · 209 阅读 · 0 评论 -
(3)工厂模式
#includeusing namespace std;class Car {public: virtual void get() = 0;};class BYD:public Car {public: void get() override { cout << "比亚迪" << endl; }};class VW :public Car {public: void原创 2017-04-02 12:15:54 · 199 阅读 · 0 评论 -
(5)原型模式prototype
原型模式是用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。适用情况:一个复杂对象,具有自我复制功能,统一一套接口原创 2017-04-12 11:51:06 · 250 阅读 · 0 评论 -
(6)代理模式
指具有与代理元具有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后),进行某些特别的处理。#includeusing namespace std;class subject {public: virtual void sell() = 0;};class shop :public subject {public : void s原创 2017-04-12 14:08:12 · 396 阅读 · 0 评论 -
(7)装饰模式
又叫作包装模式。通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替换方案。装饰模式就是把要添加的附加功能分别放在单独的类中,并让这个类包含它要装饰的对象,当需要执行时,客户端就可以有选择地、按顺序地使用装饰功能包装对象。适用于动态的给一个对象添加一些额外的职责。增加功能来说,此模式比生成子类更为灵活#includeusing namespace std;cl原创 2017-04-12 14:32:56 · 201 阅读 · 0 评论 -
(8)适配器模式
通过适配器模式可以改变已有类(或外部类)的接口形式。适用于: 讲一个类的接口转换成客户希望的另一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。#includeusing namespace std;class current18v {public: virtual void use18v() = 0;};class current220v原创 2017-04-12 15:19:56 · 191 阅读 · 0 评论 -
(9)桥接模式
基于类的最小设计原则,通过使用封装以及继承等行为来让不同的类承担不同的责任,它的特点是把抽象与行为实现分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。#includeusing namespace std;class Engine {public : virtual void InstallEngine() = 0;};class engine44 :public En原创 2017-04-12 18:33:28 · 211 阅读 · 0 评论 -
(4)建造者模式
建造者模式的意图是将一个复杂的构建与祁表示相分离,使得同样的构建过程可以创建不同的表示。适用情况:一个对象的构建比较复杂,将一个对象的构建和对象的表示进行分离。代码:#include#includeusing namespace std;class House {public: void setDoor(string door ) { m_door =原创 2017-04-03 22:11:49 · 197 阅读 · 0 评论