设计模式
守护荆棘
希望能见证自己从弱到强
展开
-
观察者模式
官方定义:观察者模式定义了一种一对多的依赖关系,让多个观察者对象,同时监听某一个对象。这个主题对象在状态发生变化时,会通知所有的观察者对象,使他们能够自动更新自己。自己理解:当一个类的改变会引起其他多个类的改变时,为了维护一致性会使各个类紧密耦合。观测者模式就是让耦合的双方都依赖于抽象,而不是依赖于具体,达到解耦合的目的。(依赖倒装原则)UML图:代码实现:#include<vector>using namespace std;//Step1 抽象主题class Subjec原创 2020-07-14 22:53:29 · 169 阅读 · 0 评论 -
策略模式
官方定义:策略模式是一种定义一些列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类别与使用算法类之间的耦合。自己理解:用来避免设计的类中同时包含众多的实现,并且实现算法之间用开关型语句(例如:if else if, switch case 等)进行多级判断所导致的代码改写复用困难等问题。UML图:代码示例:// Step1: 定义抽象策略类class Strategy {public: virtual void原创 2020-07-14 16:17:25 · 156 阅读 · 0 评论 -
模板方法模式
官方定义:模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。自己的思考:模板方法是把一个确定不变的行为过程转移到基类,并在基类中定义确定的行为步骤,将不确定的行为利用虚函数机制,在子类中进行覆写(override),从而实现不变行为的代码复用,(早绑定 vs 晚绑定)。UML类图:代码实现:#include<iostream>//库函数,函数底层代码块class Library {pr原创 2020-07-14 15:10:43 · 200 阅读 · 0 评论 -
大话设计模式之策略模式C++实现
博客中的例题及构建思想均来自于程杰老师的“大话设计模式”。策略模式和简单工厂模式在实现上没有太大的区别。策略模式相对于工厂模式最大的优点就是将各个算法策略都进一步封装在了Context对象中。客户端只需要认识一个类Context就行了,进一步降低了耦合度。实现商场打折促销:(简单工厂和策略模式)#include<iostream>using namespace std;class CashSuper {public: virtual double acceptCash(doub原创 2020-06-30 09:57:29 · 196 阅读 · 0 评论 -
大话设计模式之简单工厂模式C++实现
博客中的例题及构建思想均来自于程杰老师的“大话设计模式”。通过封装,继承,多态把程序的耦合度降低,使得程序更加灵活,易于修改且易于重复。考虑一个用单独的类来创造实例的过程,这就是工厂。实现简单的四则运算过程:#include<iostream>using namespace std;class Operation {private: double _NumA; double _NumB;public: void SetNumA() { cout << "原创 2020-06-29 13:05:11 · 4005 阅读 · 0 评论