设计模式
长不大的程序员
作者不懒,但什么都没写~
展开
-
设计模式-适配器模式
将⼀个类的接⼝转换成客户希望的另⼀个接⼝。Adapter模式使得原本由于接⼝不兼容⽽不能⼀起⼯作的那些类可以⼀起⼯作。——《设计模式》GoF。原创 2022-10-26 16:24:06 · 355 阅读 · 0 评论 -
设计模式-装饰器
动态地给⼀个对象增加⼀些额外的职责。就增加功能⽽⾔,装饰器模式⽐⽣成⼦类更为灵活。——《设计模式》GoF。原创 2022-10-24 20:42:58 · 182 阅读 · 0 评论 -
设计模式-责任链模式
使多个对象都有机会处理请求,从⽽避免请求的发送者和接收者之间的耦合关系。将这些对象连成⼀条链,并沿着这条链传递请求,直到有⼀个对象处理它为⽌。——《设计模式》GoF。原创 2022-10-24 13:51:40 · 133 阅读 · 0 评论 -
设计模式-中介者模式
设计模式-中介者模式应用场景问题:在面向对象系统的设计和开发过程中,对象与对象之间存在着相互依赖的关系。在对象很多的情况下,这种关系会越来越复杂,回事系统的耦合性加剧,代码不易于维护。解决:中介者模式可以解决这种窘境。它是通过引入中介者类,将所有的对象组合到中介者中,当有对象需要和其他对象交互时,先通知中介者,再由中介者转发交互信息。类图代码代码关系图中介者class Country;//联合国class UnitedNations{public: virtua原创 2022-01-11 12:12:38 · 288 阅读 · 0 评论 -
设计模式-单例模式
设计模式-单例模式简单介绍单例模式是为某个类创建全局唯一的静态实例通过维护一个 static 的成员变量来记录这个唯一的对象实例。通过提供一个 staitc 的接口 instance 来获得这个唯一的实例。类图代码懒汉模式:第一次用到类的实例的时候才回去实例化。class singleton //实现单例模式的类 { private: singleton(){} //私有的构造函数 static singleton* I原创 2022-01-05 19:25:06 · 266 阅读 · 0 评论 -
设计模式-抽象工厂
设计模式-抽象工厂产品族:一个品牌下面的所有产品;产品等级:多个品牌下面的同种产品;应用场景抽象工厂后续的拓展是拓展产品等级,如果是拓展产品族则不建议使用抽象工厂模式类图代码#include <iostream> using namespace std; class AbstractProductA { public: virtual ~AbstractProductA(){}; protected: AbstractProductA原创 2022-01-03 21:51:57 · 191 阅读 · 0 评论 -
设计模式-类图之类间关系
设计模式-类图之类间关系泛化关系:父类与子类的关系子类指向父类实线+空心三角实现关系:一个抽象接口的多种实现虚线+空心三角依赖关系:对象之间最弱的一种关联方式,是临时性的关联。代码中一般指由局部变量、函数参数、返回值建立的对于其他对象的调用关系 1. 虚线+箭头 关联关系 :两个相互独立的系统,一个系统的实例与另一个系统的一些特定实例存在固定关系A关联B,则A指向B4.1 聚合关系:表示整体与部分之间的关系,但有各自不同的生命周期实线+空心菱形原创 2022-01-03 15:41:17 · 288 阅读 · 0 评论 -
设计模式-观察者模式
设计模式-观察者模式应用场景一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。一个抽象模型有两个方面,其中一个方面依赖于另一个方面。将这些方面封装在独立的对象中使它们可以各自独立地改变和复用。一个对象的改变将导致其他一个或多个对象也发生改变,而不知道具体有多少对象将发生改变,可以降低对象之间的耦合度。一个对象必须通知其他对象,而并不知道这些对象是谁。需要在系统中创建一个触发链,A对象的行为将影响B对象,B对象的行为将影响C对象……,可以使用观察者模式创建一种链式原创 2022-01-03 14:23:04 · 142 阅读 · 0 评论 -
设计模式-策略模式
设计模式-策略模式应用场景在写程序时,经常会出现if和switch语句加入新的条件,并且这么新条件以后还有可能增加,那么可以考虑使用策略模式。类图举例一般写法enum TaxBase { CN_Tax, US_Tax, DE_Tax, FR_Tax //...};class SalesOrder{ TaxBase tax;public: double CalculateTax(){ //...原创 2022-01-01 10:37:41 · 544 阅读 · 0 评论 -
设计模式-模板方法
设计模式-模板方法应用场景一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现;各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复;控制子类的扩展。举例:正常写法class Library{public: void Step1(){ //... } void Step3(){ //... } void Step5(){ //... }};class Application{public: bool原创 2021-12-31 11:51:22 · 365 阅读 · 0 评论