![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++设计模式
帝江VII
杨光明媚
展开
-
设计模式__工厂模式
您需要一辆什么类型汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。#includeusing namespace std;class Shap{public: virtual void draw()=0;};class Rectangle : public Shap{public:原创 2016-08-19 17:15:01 · 390 阅读 · 0 评论 -
设计模式_策略模式
策略模式(1)在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。(2)主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。(3)UML图:原创 2017-08-27 15:01:32 · 354 阅读 · 1 评论 -
设计模式 _备忘录模式
备忘录模式备忘录模式(Memento Pattern)在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。使用情景:很多时候我们总是需要记录一个对象的内部状态,这样做的目的就是为了允许用户取消不确定或者错误的操作,能够恢复到他原先的状态,使得他有"后悔药"可吃。解决方法:通过一个备忘录类专门存储对象状态原创 2017-08-05 16:59:29 · 489 阅读 · 0 评论 -
设计模式_状态模式
状态模式(1)在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。(2)状态模式UML图:(3)在原创 2017-08-12 16:05:38 · 451 阅读 · 0 评论 -
设计模式_责任链模式
责任链模式顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。类图:原创 2017-05-31 19:33:53 · 410 阅读 · 0 评论 -
设计模式_组合模式
组合模式组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。应用情景:1、您想表示对象的部分-整体层次结构(树形结构)。2、您希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。比如原创 2017-05-04 18:44:20 · 348 阅读 · 0 评论 -
设计模式_命令模式
命令模式: 将一个请求封装为一个对象(即我们创建的Command对象),从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤销的操作。 解决的问题: 在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。类图:实例:请求计原创 2017-05-23 19:46:59 · 425 阅读 · 0 评论 -
设计模式_观察者模式
观察者模式观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。类图:可执行代码:#ifndef _OBSERVER_H_#define _OBSERVER_H_#include#incl原创 2017-05-23 19:30:28 · 383 阅读 · 0 评论 -
设计模式_桥接模式
桥接模式桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。使用场景: 1、如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在原创 2017-05-03 18:57:57 · 292 阅读 · 0 评论 -
设计模式_装饰者模式
装饰器模式装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。装饰模式提供了更加灵活的向对象添加职责的方式。可以用添加和分离的方法,用装饰在运行时刻增加和删除职责。装饰模式提供了一种“即用即付”的方法来添加职责。它并不试图在一个复杂的可定制的类中支持所有可预见的特征,相反,你原创 2017-04-20 19:51:21 · 236 阅读 · 0 评论 -
设计模式_代理模式
代理模式在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。#ifndef _PROXY_H_#define _PROXY_H_#includeclass XImage{public: virtual void display() = 0;原创 2017-04-18 19:52:04 · 242 阅读 · 0 评论 -
设计模式_享元模式
享元模式享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。比如所有的五子棋房间的棋子都是一样的。唯一的不同是每个棋子在不同的房间的不同棋盘的不同位置上。所以,对于棋子来说,我们不用放原创 2017-05-09 19:46:30 · 270 阅读 · 0 评论 -
设计模式_适配器模式
#ifndef _ADAPTE_H_#define _ATAPTE_H_#include//现在的接口class target{public: virtual void request() = 0;};class conTarget: public target{public: void request() override原创 2017-04-17 19:50:57 · 278 阅读 · 0 评论 -
设计模式_外观模式
外观模式外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。#ifndef _FACADE_H_#define _FACADE_H_#include//子系统1class subSystemOne{public: void subMet原创 2017-04-18 19:05:41 · 547 阅读 · 0 评论 -
设计模式_单例模式
单例模式就是保证一个类仅有一个实例,并提供一个访问它的全局访问点#includeclass singleObject{public: static singleObject* getInstance(); inline void show(){ std::cout << "帝江最帅" << std::endl; }private: singleObject(){};原创 2016-08-22 23:16:29 · 330 阅读 · 0 评论 -
设计模式_模板方法模式
模板模式(1)模板模式(Template Pattern):定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于原创 2017-08-27 17:46:18 · 353 阅读 · 0 评论