
设计模式
我不是胖虎
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++观察者模式
简介 指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。 代码 #include<iostream> using namespace std; #include<list> class observe { public: observe(){} v...原创 2020-01-12 21:36:30 · 231 阅读 · 0 评论 -
C++建造者模式
简介 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。 代码 #include<iostream> using namespace std; #include<list> ...原创 2020-01-09 16:42:14 · 163 阅读 · 0 评论 -
C++外观模式
简介 外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。 这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。 代码 #include<iostream> using namespace std; class Sy...原创 2020-01-07 11:24:25 · 161 阅读 · 0 评论 -
C++模板模式
简介 定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。 代码 #include<iostream> using namespace std; class Abstract { public: void show() { opera1(); opera2(); } virtual void oper...原创 2020-01-06 15:01:36 · 113 阅读 · 0 评论 -
C++原型模式
简介 原型模式和建造者模式、工厂方法模式一样,都属于创建型模式的一种。简单的来说,我们使用原型模式,就是为了创建对象。但是,在以下场景下,使用原型模式是最好的选择: 1.当我们的对象类型不是开始就能确定的,而这个类型是在运行期确定的话,那么我们通过这个类型的对象克隆出一个新的对象比较容易一些; 2.有的时候,我们需要一个对象在某个状态下的副本,此时,我们使用原型模式是最好的选择;例如:一个对象,经...原创 2020-01-03 19:39:01 · 142 阅读 · 0 评论 -
装饰模式
针对的问题 1)需要扩展一个类的功能,或给一个类增加附加责任。 2)需要动态的给一个对象增加功能,这些功能可以再动态地撤销。 UML 代码 #include<iostream> using namespace std; class person { public: void show() { cout<<"出门穿衣服"<<endl; } }; cla...原创 2019-12-31 10:42:55 · 140 阅读 · 0 评论 -
C++实现反射机制优化简单工厂
在简单工厂模式中,在工厂类中,需要加入switch或者if判断,增加了代码的耦合性,不利于扩展。 引入反射机制则可以去除判断,而是根据传入的字符串直接生产对应的实例 未加入反射机制的简单工厂 class Fruit { public: virtual void eat() = 0; }; class apple:public Fruit { public: void eat() { co...原创 2019-12-29 09:52:10 · 439 阅读 · 0 评论 -
C++实现反射机制
C++是不支持通过类名称字符串”ClassXX”来生成对象的,也就是说我们可以使用 ClassXX* object =new ClassXX; 来生成对象, 但是不能通过ClassXX* object=new “ClassXX”; 来生成对象。 反射是一种通过程序运行过程中用类名创建对象,并获取类的成员和方法。 Factory.h #ifndef _FACTORY_H #define _FACTO...原创 2019-12-28 21:46:16 · 252 阅读 · 0 评论 -
代理模式
简介 代理模式为其他对象提供一个代理,可以控制对这个对象的访问 也就是说在访问这个对象的时候,可以添加一些重复的代码至代理类中,减少调用时的代码量。 不用代理模式 #include<iostream> using namespace std; #include<string> class Item { public: Item(string kind,bool flag)...原创 2019-12-19 21:21:32 · 104 阅读 · 0 评论 -
单例模式
单例模式简介 1.单例类只有一个实例存在 2.必须有这个类本身自行创建实例 3.面向整个系统提供这个实例 任务管理器使用单例模式 单例模式分为饿汉式和懒汉式两种 创建步骤: 1.构造函数私有化 如果构造函数是公共的,那么就可以在类外无限的创建实例。当构造函数是私有的,那么就不能在类外创建实例 2.定义一个静态指针指向实例 在系统的静态区创建一个实例,利用一个静态指针指向这块区域 3.提供一个全局的...原创 2019-12-18 11:37:17 · 170 阅读 · 0 评论 -
设计模式(简单工厂模式、工厂模式、抽象工厂模式)
前提 当逻辑较为简单时,可以直接创建对应的类。代码如下: #include<iostream> using namespace std; class apple { public: void eat() { cout<<"吃苹果"<<endl; } }; class banana { public: void eat() { cout<...原创 2019-12-17 11:29:30 · 122 阅读 · 0 评论