设计模式
我不是胖虎
这个作者很懒,什么都没留下…
展开
-
C++观察者模式
简介指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。代码#include<iostream>using namespace std;#include<list>class observe{public: observe(){} v...原创 2020-01-12 21:36:30 · 191 阅读 · 0 评论 -
C++建造者模式
简介建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。代码#include<iostream>using namespace std;#include<list>...原创 2020-01-09 16:42:14 · 126 阅读 · 0 评论 -
C++外观模式
简介外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。代码#include<iostream>using namespace std;class Sy...原创 2020-01-07 11:24:25 · 128 阅读 · 0 评论 -
C++模板模式
简介定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。代码#include<iostream>using namespace std;class Abstract{public: void show() { opera1(); opera2(); } virtual void oper...原创 2020-01-06 15:01:36 · 79 阅读 · 0 评论 -
C++原型模式
简介原型模式和建造者模式、工厂方法模式一样,都属于创建型模式的一种。简单的来说,我们使用原型模式,就是为了创建对象。但是,在以下场景下,使用原型模式是最好的选择:1.当我们的对象类型不是开始就能确定的,而这个类型是在运行期确定的话,那么我们通过这个类型的对象克隆出一个新的对象比较容易一些;2.有的时候,我们需要一个对象在某个状态下的副本,此时,我们使用原型模式是最好的选择;例如:一个对象,经...原创 2020-01-03 19:39:01 · 109 阅读 · 0 评论 -
装饰模式
针对的问题1)需要扩展一个类的功能,或给一个类增加附加责任。2)需要动态的给一个对象增加功能,这些功能可以再动态地撤销。UML代码#include<iostream>using namespace std;class person{public: void show() { cout<<"出门穿衣服"<<endl; }};cla...原创 2019-12-31 10:42:55 · 101 阅读 · 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 · 388 阅读 · 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 · 218 阅读 · 0 评论 -
代理模式
简介代理模式为其他对象提供一个代理,可以控制对这个对象的访问也就是说在访问这个对象的时候,可以添加一些重复的代码至代理类中,减少调用时的代码量。不用代理模式#include<iostream>using namespace std;#include<string>class Item{public: Item(string kind,bool flag)...原创 2019-12-19 21:21:32 · 73 阅读 · 0 评论 -
单例模式
单例模式简介1.单例类只有一个实例存在2.必须有这个类本身自行创建实例3.面向整个系统提供这个实例任务管理器使用单例模式单例模式分为饿汉式和懒汉式两种创建步骤:1.构造函数私有化如果构造函数是公共的,那么就可以在类外无限的创建实例。当构造函数是私有的,那么就不能在类外创建实例2.定义一个静态指针指向实例在系统的静态区创建一个实例,利用一个静态指针指向这块区域3.提供一个全局的...原创 2019-12-18 11:37:17 · 138 阅读 · 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 · 92 阅读 · 0 评论