设计模式
li_unit
这个作者很懒,什么都没留下…
展开
-
设计模式--访问者模式
访问者模式:属于行为型模式基本原理:元素类的执行算法随着访问者改变而改变。主要流程: 1.创建元素类,内有不同的执行算法,根据不同的访问者选择不同的执行算法 2.创建访问类,实现不同的访问派生类,将自身传入元素类的执行算法#include <iostream>#include <string>#include <vector>using namespace std;class Keyboard;class...原创 2020-07-31 22:19:15 · 164 阅读 · 0 评论 -
设计模式--模板模式
模板模式:属于行为型模式基本原理:子类按照基类的定义的方法执行,子类实现具体的方法。主要流程: 1.创建基类,并定义方法执行的顺序 2.创建子类,每个子类具体实现基类中的方法#include <iostream>#include <string>using namespace std;//定义基类class Game{public: //定义需要子类实现的方法 virtual void initDate...原创 2020-07-31 22:17:54 · 166 阅读 · 0 评论 -
设计模式--策略模式
策略模式:属于行为型模式基本原理:一个类的行为或其算法可以在运行时更改主要流程: 1.创建策略基类,并根据不同行为实例化不同的策略类。 2.使用时选择合适的策略类注意:如果一个系统的策略太多最好考虑其他模式。#include <iostream>#include <string>using namespace std;//策略基类class Strategy{public: virtual int doOpe...原创 2020-07-31 22:16:46 · 110 阅读 · 0 评论 -
设计模式--空对象模式
空对象模式:属于行为型模式基本原理:用一个空对象取代 NULL 对象实例的检查主要流程: 1.创建一个基类 2.在这个基类上实例化一个该类型的空对象 3.在使用时没有找到可实例化的对象,返回该对象的空对象注意:空对象不是检查空值,而是反应一个不做任何动作的关系。这样的空对象也可以在数据不可用的时候提供默认的行为。#include <iostream>#include <string>using name...原创 2020-07-31 22:15:30 · 122 阅读 · 0 评论 -
设计模式--状态模式
状态模式:属于行为型模式基本原理:类的行为是基于它的状态改变的主要流程: 1.创建一个对象,该对象可以使用状态改变行为 2.创建状态类,对象可以使用这些状态来进行不同的行为#include <iostream>#include <string>using namespace std;class State;//创建一个对象,该对象受状态控制class Context{private: State *sta...原创 2020-06-30 23:23:56 · 976 阅读 · 0 评论 -
设计模式--观察者模式
观察者模式:属于行为型模式基本原理:当一个对象被修改时,会自动通知它的依赖对象。主要流程: 1.创建一个对象,存储它的所有依赖对象 2.在对象被修改的时候,通知所有依赖的对象 3.创建依赖对象,有统一的刷新方法注意:避免循环依赖#include <iostream>#include <string>#include <vector>using namespace std;//依赖对象基...原创 2020-06-30 23:21:03 · 1689 阅读 · 0 评论 -
设计模式--备忘录模式
备忘录模式:属于行为型模式基本原理:保存一个对象的某个状态,以便在适当的时候恢复对象。主要流程: 1.创建一个状态对象 2.创建管理类,用来管理状态对象,支持修改状态和得到状态 3.创建存储类,用来存储当前的状态对象,支持存储和获得对象#include <iostream>#include <string>#include <vector>using namespace std;//对象...原创 2020-06-30 23:18:51 · 549 阅读 · 0 评论 -
设计模式--中介者模式
中介者模式:属于行为型模式基本原理:用一个中介对象来封装对象之间的交互主要流程: 1.创建对象,并可以传消息给中介者类 2.创建中介者类,用来处理对象之间的交互注意:中介者是用来处理对象之间的交互,不管是相同对象还是不同对象,如MVC中的C就是中介者。#include <iostream>#include <string>using namespace std;//创建对象class User{private: ...原创 2020-06-30 23:17:44 · 2035 阅读 · 0 评论 -
设计模式--迭代器模式
迭代器模式:属于行为型模式基本原理:顺序访问一组对象,不需要知道对象的底层。主要流程: 1.创建迭代器类,用来连接对象和判断是否有下一个对象。 2.使用时得到该迭代器类型,并顺序使用该迭代器注意:迭代器的类型要保持一致。可以参考c++语言中的容器迭代器是如何实现的。#include <iostream>#include <string>using namespace std;//创建一个迭代器class Iterator...原创 2020-05-31 22:40:46 · 134 阅读 · 0 评论 -
设计模式--解释器模式
解释器模式:属于行为型模式基本原理:创建解释器,来解释特定的上下文。通俗一点就是类似,先定义一个文本,再查看指定的关键字是否符合需求的在文本中。主要流程: 1.创建解释器类的终结符表达式类,就是用来判断关键词是否在关键字集合中。 2.创建解释器类的非终结符表达式类,利用终结符表达式类来判断关键字是否符合条件的在集合中。 3.定义一个环境类,它包含解释器需要的数据(即关键字集合),完成对终结符表达式的初始化,并调用非终结符表达式来进行解释...原创 2020-05-31 22:39:28 · 152 阅读 · 1 评论 -
设计模式--命令模式
命令模式:属于行为型模式基本原理:请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。主要流程: 1.创建命令对象。该对象中包含请求,和执行请求。 2.创建请求类,其中包含请求 3.创建命令调用类,寻找合适的执行对象注意:该模式的核心点在于请求包含在命令内。#include <iostream>#include <string>...原创 2020-05-31 22:36:54 · 163 阅读 · 0 评论 -
设计模式--责任链模式
责任链模式:属于行为型模式基本原理:消息可以在链式的结构中一层层的传递主要流程: 1.创建结构基类,并在基类中创建设置下一层的方法,和传递信息给下一层的方法 2.将基类实例化成不同的功能, 3.将每个实例化类根据需求连起来 4.使用时使用基类,传入信息注意:不能保证信息一定被接收。该模式降低了信息发送者与接收者的耦合性。#include <iostream>#include <strin...原创 2020-05-31 22:34:50 · 150 阅读 · 0 评论 -
设计模式--代理模式
代理模式:属于结构型模式基本原理:用一个类去代表另一个类的功能。主要流程: 1.创建功能类 2.创建代理类,代理类中有功能类中可以使用的功能 3.在使用的时候,使用的是代理类注意: 1.和适配器模式的区别,适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。 2.和装饰器模式的...原创 2020-04-29 22:01:29 · 96 阅读 · 0 评论 -
设计模式--过滤器模式
过滤器模式:又叫标准模式属于结构型模式基本原理:创建过滤器,过滤出符合标准的对象。主要流程: 1.准备原料,将对象抽象成有共性的一类 2.根据需求的不同创建各种过滤器 3.依靠过滤器过滤出需要的对象注意:过滤器是工具,创建的对象是原料#include <iostream>#include <strin...原创 2020-04-29 22:00:10 · 162 阅读 · 0 评论 -
设计模式--外观模式
外观模式:属于结构型模式基本原理:隐藏系统复杂性,为系统开放一个便于使用的接口主要流程: 1.创建系统和子系统 2.创建一个外观类,统一管理子系统的功能,并对外提供接口注意:外观类是管理子系统和对外提供接口#include <iostream>#include <string>using namespace ...原创 2020-04-29 21:58:39 · 116 阅读 · 0 评论 -
设计模式--装饰器模式
装饰器模式:属于结构型模式基本原理:创建一个装饰器用来对一个现有对象添加新功能,不改变对象结构主要流程: 1.根据对象创建一个修饰类,该修饰类要保持方法签名完整 2.在修饰类中根据需求添加新的功能 3.使用时将对象或对象的引用传入修饰类中注意:修饰类要与对象在一定程度上一致,新的功能只在修饰类中添加#include <iostream...原创 2020-04-29 21:57:11 · 131 阅读 · 0 评论 -
设计模式--组合模式
组合模式:又叫部分整体模式,属于结构型模式。 基本原理:以树形的结构将相似的对象组合起来。 主要流程: 1.创建对象 2.在对象中设置用来存放下一级相似对象的数据结构。 3.在对象中设置增删改查等功能。 注意:这种模式和数据结构中的树形结构相似#include <iostrea...原创 2020-03-10 11:57:17 · 124 阅读 · 0 评论 -
设计模式--过滤器模式
过滤器模式:又叫标准模式属于结构型模式 基本原理:创建过滤器,过滤出符合标准的对象。 主要流程: 1.准备原料,将对象抽象成有共性的一类 2.根据需求的不同创建各种过滤器 3.依靠过滤器过滤出需要的对象 注意:过滤器是工具,创建的对象是原料#include <iostream>...原创 2020-03-10 11:55:09 · 256 阅读 · 0 评论 -
设计模式--桥接模式
桥接模式属于结构型模式 基本原理:链接两个不同的独立变化的维度。将实现类与抽象类变成两个独立的维度。 主要流程: 1.创建一个维度A 2.创建另一个维度B,并让之前的维度A成为本维度B的一个成员 3.在使用时创建维度B,并对维度B的成员维度A进行赋值 注意:抽象类依赖实现类#include...原创 2020-03-10 11:52:44 · 153 阅读 · 0 评论 -
设计模式--适配器模式
适配器模式属于结构型模式 基本原理:根据不同的需求,使用一个适配器去寻找应对的方法。 主要流程: 1.创建解决方法的类。 2.创建一个适配器,根据不同需求对应相应的解决方法。 3.使用一个类去分配适配器。 注意:适配器不是在详细设计时添加的,而是解决正在服役的项目的问题。#include ...原创 2020-03-10 11:46:39 · 74 阅读 · 0 评论 -
设计模式--原型模式
原型模式:属于创建型模式 基本原理:又称为克隆模式,拷贝本身对象。可以直接使用语言中的拷贝构造。 主要流程:在构建对象的时候实现一个对本身的拷贝函数。 特别注意:要有对应的销毁方法。#include <iostream>using namespace std;//对象基类,可以对有共性的对象统一要求功能函数class prototype{...原创 2020-02-29 01:18:25 · 80 阅读 · 0 评论 -
设计模式--创建者模式
建造者模式属于创建型模式 基本原理:有底到高一层层的创建叠加,上层是依靠底层的创建。就如细胞组成人体不同的组织,组织组成了不同的人。 主要流程: 1.建立最基本的单元 2.建立所要建造的物品,使用基本单元创建该物品的元素 3.使用物品建立完整的结构#include <iostream>...原创 2020-02-29 01:16:37 · 108 阅读 · 0 评论 -
设计模式--单例模式
单例模式属于创建型模式基本原理:是全局只有一个对象,不管在何处使用,都是使用的同一个对象中的方法。主要流程:创建时如果已经有存在的则返回已有的,如果没有则创建一个新的特别注意:如果是多线程,要避免同时创建#include <iostream>using namespace std;class SingleObject{private: SingleObject...原创 2020-02-29 01:13:12 · 102 阅读 · 0 评论 -
设计模式--工厂模式--抽象工厂模式
工厂模式属于创建型模式基本原理:使用一个工厂类统一生产各种产品。主要流程: 1.创建产品的基类,便于统一返回创建的产品 2.创建各种产品,继承基类,注意多态 3.创建工厂类,对每种产品进行区分创建。 4.在使用时要先实例化工厂类,在调用期内生产的方法。优点: 1.一个调用者想创建一个对象,只要知道其名称就可以了。 ...原创 2020-02-29 01:09:59 · 76 阅读 · 0 评论