设计模式
csdn_dzh
一些点滴的记录
展开
-
设计模式14-装饰模式
文章目录一、装饰模式二、例子一、装饰模式装饰模式可以实现功能动态扩展,把要附加的功能分别放在单独的类中,让这个类包含它要装饰的对象,当需要执行时,客户端就可以有选择地使用装饰功能包装对象二、例子比如一个人,当进入装饰器以后,就变成一个新的对象,这个对象具有以前对象的功能,同时也具有新对象的功能#include <iostream>#include <list>using namespace std;class AbstractHero {public: .原创 2020-06-16 21:49:02 · 265 阅读 · 0 评论 -
设计模式13-观察者模式
文章目录一、观察者模式二、例子一、观察者模式观察目标的变化导致一系列观察者的变化,用于建立对象和对象之间的依赖关系,一个对象(观察目标)发生改变时将自动通知其他对象(观察者),其他对象作出相应的反应。二、例子观察目标应当有一份观察者的对象,这样才能保证通知到观察者,当发生变化时,调用 update 方法更新观察者的状态。观察目标还应同时可以增加观察者或删除观察者。#include <iostream>#include <list>using namespace.原创 2020-06-16 21:11:51 · 216 阅读 · 0 评论 -
设计模式12-命令模式
文章目录一、命令模式二、例子一、命令模式命令模式是一种对象行为模式,将一个请求封装成一个对象,进而可以用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。发送请求的对象只要知道怎么发送请求,而不用知道是如何完成请求的。二、例子在下面的例子中,由于客户端不同请求在服务端的处理方法接口均不一致,因此,需要将这些请求都使用一个接口 AbstractCmd 统一起来,这样,就能将这些请求统一放到服务器中执行。只要来了一个请求,就 new 一个这样的对象放到服务器队列中,.原创 2020-06-16 20:46:30 · 309 阅读 · 0 评论 -
设计模式11-策略模式
文章目录一、策略模式二、例子一、策略模式定义了一系列封装好的了算法,它们之间可相互替换。二、例子#include <iostream>#include <string>#include <vector>#include <algorithm>using namespace std;// 抽象武器策略class Weapon_stgy {public: virtual void UseWeapon() = 0;};class.原创 2020-06-13 16:32:10 · 202 阅读 · 0 评论 -
设计模式10-模板方法模式
文章目录一、模板方法模式二、例子一、模板方法模式模板方法模式是一种代码复用的技术,它定义一个操作中算法的框架,将一些步骤延迟到子类中,使得子类可不改变一个算法的执行顺序结构而重定义该算法的某些步骤。二、例子例如,泡茶和泡咖啡的步骤是一样的,因此可以在抽象类中将步骤定好,到子类再实现即可#include <iostream>#include <string>#include <vector>#include <algorithm>usin.原创 2020-06-13 16:16:53 · 235 阅读 · 0 评论 -
设计模式09-适配器模式
文章目录一、适配器模式二、例子一、适配器模式将一个类的接口转换成客户希望的另一个接口,使得原本因接口不兼容而不能一起工作的 那些类可以一起工作。比如 stl 中一个算法需要两个参数,但调用时需要一个参数,中间就需要一个适配器去把两个参数的算法适配成一个参数的。二、例子...原创 2020-06-12 21:59:38 · 164 阅读 · 0 评论 -
设计模式08-外观模式
文章目录一、外观模式二、例子一、外观模式外观模式是一组具有类似功能的类群,提供一个一致的简单的界面,这个界面就叫外观。在下面的例子中,外观模式将具有类似功能的子系统抽象到同一个接口来管理,外界仅需要通过这个接口来和子系统进行交互,而不是直接和子系统来交互#include <iostream>#include <string>using namespace std;class Sys1 {public: void run() { cout <<.原创 2020-06-12 21:41:03 · 168 阅读 · 0 评论 -
设计模式07-代理模式
文章目录一、代理模式一、代理模式代理模式:为其他对象提供一种方式控制这个对象的访问,起到中介的作用。原创 2020-06-12 18:18:30 · 292 阅读 · 0 评论 -
设计模式06-单例模式C++实现
文章目录一、单例模式一、单例模式只能有一个类的对象,例如windows中的任务管理器,OS只需要维护这样一个对象即可,不需要每次都创建。使用单例模式来限制某个类创建实例对象的个数为1。C++单例模式饿汉和懒汉...原创 2020-06-12 15:58:48 · 293 阅读 · 0 评论 -
设计模式05-工厂模式
文章目录一、简单工厂模式二、工厂方法模式三、抽象工厂模式一、简单工厂模式创建一个工厂类(水果工厂),根据我们的传入参数来决定生产何种类型的产品(水果),这样,就不用我们自己去new了,不用关心对象是怎么创建的,我们只需要对象适合工厂类负责创建的对象比较少的情况#include <iostream>using namespace std;class AbstractFruit {public: virtual void Name() = 0;};class App.原创 2020-06-11 22:37:55 · 182 阅读 · 0 评论 -
设计模式04-依赖倒转原则
文章目录传统的面向过程的程序设计使高层次的模块自顶向下逐级依赖于低层次的模块,中间层和高层模块之间存在较高的耦合度,这样如果其中一个模块发生变化,整个业务就会受影响。例如下面的例子#include <iostream>using namespace std;// 高层class BankWorker {public: void saveService() { cout << "save service\n"; } void payService() {.原创 2020-06-11 20:35:10 · 159 阅读 · 0 评论 -
设计模式03-合成复用原则
文章目录一、合成复用原则一、合成复用原则合成复用原则:继承和组合,优先使用组合原创 2020-06-11 18:38:53 · 195 阅读 · 0 评论 -
设计模式02-迪米特原则
文章目录一、迪米特原则概念二、例子一、迪米特原则概念迪米特原则:一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的了解举个例子,你要租房,如果深圳有很多房子,你一个一个地去看,那么就会很累,从程序的角度上看耦合性会很强。反之,如果通过中介,告诉他你的要求,他会帮你筛选出符合你要求的房子,这样你不用知道各种房子的信息就能获得你想要的结果。二、例子...原创 2020-06-11 16:20:36 · 245 阅读 · 0 评论 -
设计模式01-减少修改代码的开闭原则
文章目录一、开闭原则概念二、例子一、开闭原则概念开闭原则:对扩展开放,对修改关闭增加功能应该是增加代码而不应该是修改代码二、例子#include <iostream>#include <string>using namespace std;class Calculator {public: Calculator(int a, int b, string how2operator) { this->_a = a; this->_b =.原创 2020-06-11 16:03:16 · 247 阅读 · 0 评论 -
C++设计模式
文章目录01原创 2020-06-11 15:35:52 · 202 阅读 · 0 评论