设计模式
C++设计模式
ISmileLi
爱人生,爱微笑,一个爱分享的程序猿!
展开
-
设计模式汇总篇-兄弟,该学点设计模式了!
总序这篇文章是对整个设计模式汇总篇,绘制了各种设计模式的UML类图,补充之前分享的篇幅中没有UML类图,方便学习和查看,文中的大部分文字叙述,在开篇写设计模式系列已经有存在。文章最后提供了设计模式的源码下载地址,有需要的可以直接下载使用,源码在windows下使用VS2017编译通过,可以使用VS系列直接创建工程编译,采用纯C++编写,也可以移植到linux平台编译。一、设计模式简述设计模式...原创 2020-03-10 23:01:47 · 458 阅读 · 0 评论 -
设计模式之解释器模式-不解释,自己看!
一、解释器模式的概念解释器模式属于行为型模式,它提供一个文法表达式处理接口,该接口解释一个特定的上下文,它用编译语言的方式来分析应用中的实例对象。二、解释器模式使用场景1、可以将一个需要解释执行的语言中的句子表示为一个抽象语法树。2、一些重复出现的问题可以用一种简单的语言来进行表达。3、一个简单语法需要解释的场景。三、解释器模式构建方法1、环境类(Context)环境类又称为上下文...原创 2020-03-08 18:55:25 · 297 阅读 · 0 评论 -
设计模式之迭代器模式-来看看怎么迭代的
一、迭代器模式的概念迭代器模式属于行为型模式,用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。二、迭代器模式使用场景1、访问一个聚合对象的内容而无须暴露它的内部表示。2、需要为聚合对象提供多种遍历方式。3、为遍历不同的聚合结构提供一个统一的接口。三、迭代器模式构建方法1、迭代器抽象类(Iterator)迭代器抽象类定义了访问和遍历元素的接口,声明了用于遍历数据元素的方法,...原创 2020-03-08 16:46:13 · 241 阅读 · 0 评论 -
设计模式之状态模式-看看状态怎么样?
一、状态模式的概念状态模式属于行为型设计模式,它通过改变对象的内部状态而改变对象的行为,这个对象表现得就好像修改了它的类一样。状态模式主要解决:当控制一个对象状态转换的条件表达式过于复杂时,把状态的判断逻辑转移到表现不同状态的一系列类当中,从而使复杂的判断逻辑简单化。二、状态模式使用场景1、行为随状态改变而改变的场景。2、条件和分支语句的替代者。三、状态模式构建方法1、用户对象(上下...原创 2020-03-07 21:52:36 · 356 阅读 · 0 评论 -
设计模式之访问者模式-访问一下呗!
一、访问者模式的概念访问者模式属于行为模式,它分离对象的数据和行为,使用访问者模式,可以在不修改已有类的情况下,增加新的操作角色和职责。二、访问者模式使用场景1、当对象结构中的对象对应的类很少改变,但经常需要在此对象结构上定义新的行为和操作方法。2、当需要对对象结构新增加的行为和操作,避免新的操作和行为改变原来的对象类,可以使用该模式实现解耦合。三、访问者模式构建方法1、抽象访问者类(...原创 2020-03-05 22:32:36 · 272 阅读 · 0 评论 -
设计模式之备忘录模式-把我放在你的关注里,备份一下啊!
一、备忘录模式的概念备忘录模式属于行为模式,它保存对象的内部状态,并在需要的时候恢复对象以前的状态。二、备忘录模式使用场景1、当需要保存和恢复对象的内部状态时,可以使用备忘录模式。2、当需要提供一个可回滚的操作时,可以使用备忘录模式,典型应用就是撤销恢复快捷键Ctrl+z。三、备忘录模式构建方法1、原生者类(Originator)需要被保存和恢复的对象类2、备忘录类(Memento...原创 2020-03-04 21:13:50 · 158 阅读 · 0 评论 -
设计模式之观察者模式-别只观察,要行动!
一、观察者模式的概念观察者模式属于行为模式, 它提供给关联对象一种同步通信的手段, 使某个对象与依赖它的对象之间保持状态同步;作用是当一个对象的状态发生变化时, 能够自动通知它的关联对象,自动刷新对象状态。二、观察者模式使用场景1、当对象间存在一种一对多的依赖关系时,每一个对象改变状态都会影响其它对象,所有依赖于它的对象都会得到通知。2、一个抽象模型有两个方面,其中一个方面依赖于另一个方面...原创 2020-03-03 12:31:26 · 279 阅读 · 0 评论 -
设计模式之中介者模式-无中介,该多好!
一、中介者模式的概念中介者模式是行为型模式之一,中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性,它提供了一个中介类,通过中介类处理不同类之间的通信,并支持松耦合,使代码易于维护。二、中介者模式使用场景系统中用一个中介对象,封装一系列对象的交互行为,中介者协调着各个对象的相互作用,从而实现解耦合,独立的改变各个对象之间的交互。三、中介者模式构建方法1、...原创 2020-03-01 00:29:46 · 229 阅读 · 0 评论 -
设计模式之策略模式-软件设计的锦囊妙计!
一、策略模式的概念策略模式是一种行为模式,它通过对一系列的算法(或者行为)加以封装,并为这些算法(或者行为)定义统一的抽象算法(或者行为)接口, 具体子类继承该抽象算法(或者行为)接口对所有的算法(或者行为)加以封装和实现,调用者去自由的选择使用哪个算法(或者行为)。二、策略模式使用场景1、一个系统需要动态地在几种算法(或者行为)中选择一种时,可以使用策略模式。2、当一个对象有很多的行为,...原创 2020-02-29 12:01:16 · 354 阅读 · 0 评论 -
设计模式之责任链模式-做人要有点责任感!
一、责任链模式的概念责任链模式也叫职责链模式,属于行为模式,该模式构造一系列分别担当不同职责的类对象,来共同完成一个任务, 这些类对象之间像链条一样紧密相连,所以被称作职责链模式。二、责任链模式使用场景1、有多个对象可以处理同一个请求,具体哪个对象处理该请求由运行时刻自动确定。2、当需要向多个对象中的一个提交一个请求时,可以使用职责链模式。3、可以动态指定一组对象处理请求时,可以使用职责...原创 2020-02-25 22:53:21 · 366 阅读 · 0 评论 -
设计模式之命令模式-要听话!
一、命令模式的概念命令模式是一种数据驱动的设计模式,属于行为型模式;请求以命令的形式包裹在对象中,并传递给调用对象;调用对象寻找可以处理该命令的合适对象,并把该命令传给相应的对象,该对象执行命令。二、命令模式使用场景1、命令模式是将一个请求封装为一个对象,从而可用不同的请求对客户端进行参数化、对请求排队或记录请求日志、支持可撤销的操作等等。三、命令模式构建方法1、命令抽象类(Comma...原创 2020-02-25 20:38:46 · 388 阅读 · 0 评论 -
设计模式之模板模式-一个模子刻出来的!
一、模板模式的概念模板模式属于行为型模式,在一个抽象父类中定义和规定了子类共同的方法,它的各个子类继承这个父类,并根据各自的需要重写抽象类中的方法。二、模板模式使用场景1、多个子类有共同的方法和相同的逻辑时,可以使用模板模式。2、一些重要的和复杂的方法,可以使用模板模式。三、模板模式构建方法1、抽象父类抽象父类给子类提供统一的共同接口和方法。2、具体实现类具体实现类继承抽象父类,...原创 2020-02-24 22:03:04 · 465 阅读 · 0 评论 -
设计模式之享元模式-来点高效省内存的!
一、享元模式的概念享元模式属于结构型模式,主要用于减少创建对象的数量,以减少内存占用和提高性能。享元模式尝试复用现有的对象实例,如果有就复用,没有再创建,从而达到减少内存占用和提高性能的目的。二、享元模式使用场景1、需要以共享的方式,高效的支持大量的细粒度的对象时可以使用享元模式。2、需要使用缓冲池技术时可以使用享元模式。三、享元模式构建方法1、抽象享元类所有具体享元的父类,给具体...原创 2020-02-23 17:42:23 · 332 阅读 · 0 评论 -
设计模式之外观模式-要内在也要外表!
一、外观模式的概念外观模式为一组具有类似功能的类或者子系统,提供一个统一的高层接口,以供客户端调用,使得客户端调用这些类或者子系统更加的容易。二、外观模式使用场景1、当需要为一个复杂的子系统提供一个简单的对外接口时可以使用外观模式。2、当客户端需要调用多个子系统时,可以使用外观类将子系统和客户端解耦合,提高子系统的可移植性。三、外观模式构建方法1、外观类外观模式的核心,为客户端定义一...原创 2020-02-22 21:51:40 · 289 阅读 · 0 评论 -
设计模式之组合模式-一个人的力量是有限的,组合更强大!
一、组合模式的概念组合模式,又叫部分整体模式,属于结构型模式,是用于把一组相似的对象当作一个单一的对象,它依据树形结构来组合对象,用来表示“部分-整体”层次,创建一个对象组的树形结构,通过一个对象可以访问整个对象树。二、组合模式使用场景1、用来表示对象的“部分-整体”层次结构时可以使用组合模式。2、希望用户忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象。三、组合模式构建方...原创 2020-02-22 18:03:51 · 350 阅读 · 0 评论 -
设计模式之桥接模式-逢山开路,遇水搭桥!
一、桥接模式的概念桥接模式是构造型的设计模式之一,基于类的最小设计原则, 使用封装、聚合以及继承等行为来让不同的类承担不同的责任。它的主要特点是把抽象与行为实现分离开来,从而可以保持各部分的独立性以及对它们的功能扩展。二、桥接模式使用场景1、希望将一个系统中的抽象部分和实际部分解耦合,增加各部分的灵活性可以使用桥接模式。2、一个系统中或者一个类中存在独立变化的两个维度,这两个维度需要进行...原创 2020-02-22 12:12:49 · 406 阅读 · 0 评论 -
设计模式之适配器模式-配不配?试试就知道!
一、适配器模式的概念适配器模式是构造型模式之一,通过适配器模式可以改变已有类的接口形式,以适应客户端的调用需要,从而使原来不能兼容的类可以兼容在一起工作。二、适配器模式使用场景1、适用于将一个类的接口转换成客户端可以调用接口,使得原本由于接口不兼容的类可以兼容工作在一起。三、适配器模式构建方法1、目标接口类提供客户端可以调用的接口。2、适配者类需要适配的类。3、适配器类将适配者...原创 2020-02-18 21:20:12 · 227 阅读 · 0 评论 -
设计模式之装饰者模式-有时候还是需要装饰一下自己才好!
一、装饰者模式的概念装饰者模式又叫做包装模式,在不必改变原有类文件的情况下,它通过创建一个包装对象来不断地装饰原来的对象,来动态地扩展对象的功能,是继承关系的一个替换方案。二、装饰者模式使用场景1、当需要给一个对象扩展新的功能或者添加新的职责时可以使用装饰者模式。2、当需要给一个对象动态的添加或者撤销功能时可以使用装饰者模式。3、当一个类需要大量扩展时或者使用继承关系比较困难时,可以使用...原创 2020-02-17 22:22:38 · 244 阅读 · 0 评论 -
设计模式之代理模式-做个代理也挺好!
一、代理模式的概念代理模式是构造型设计模式,它可以为其他对象提供一种代理以便控制对这个对象的访问。二、代理模式使用场景1、在直接使用对象时会给使用者带来很多麻烦的时候,增加一个中间层(即代理)来间接使用对象。三、代理模式构建方法1、抽象主题类真是主题与代理主题的共同接口类。2、真实主题类定义了真实对象类的所有接口。3、代理主题类含有真实主题对象的引用,代理角色通常在将客户端调用...原创 2020-02-16 19:22:08 · 266 阅读 · 0 评论 -
设计模式之原型模式-看我72变!
一、原型模式的概念原型模式是一种对象创建型模式, 它采取复制原型对象的方法来创建对象的实例,而不需要知道创建对象的细节过程,它是目标对象的一个“自我克隆”。二、原型模式使用场景1、创建一个对象的成本比较大时,可以考虑使用复制的方式获取一个新对象。三、原型模式构建方法1、抽象原型类为具体原型提供一个统一抽象接口,需要具体原型类实现。2、具体原型类被复制的对象,需要实现抽象原型类中的统...原创 2020-02-13 16:05:47 · 221 阅读 · 0 评论 -
设计模式之建造者模式-其实,每个程序员都是一名建造者!
一、建造者模式的概念建造者模式模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,把复合对象的建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。二、建造者模式使用场景1、一个对象的构建比较复杂,将一个对象的构建和对象的表示进行分离。2、对象内部各个属性之间有相互依赖的关系。三、建造者模式构建方法1、抽象建造者类为创建产品各个部分提供统一抽象接口。2、构...原创 2020-02-13 12:00:08 · 242 阅读 · 0 评论 -
设计模式之抽象工厂模式-我生产的是一个家族!
一、抽象工厂模式的概念抽象工厂模式可以向客户端提供一个接口, 使得客户端在不必指定产品的具体类型的情况下, 能够创建多个产品族的产品对象。工厂模式只能生产一种产品,抽象工厂模式是生产一族产品。二、抽象工厂模式使用场景1、在不指定具体的产品情况下,创建多个产品族中的产品对象。三、抽象工厂模式构建方法1、构建抽象工厂类抽象工厂类是抽象工厂模式的核心, 包含对多个产品结构的声明,其他所有的...原创 2020-01-06 22:30:15 · 246 阅读 · 0 评论 -
设计模式之工厂模式-你以为我只有一个工厂吗?
一、工厂模式的概念工厂模式是一种常用的创建型设计模式,它和简单工厂模式在结构上不同的地方就是工厂类得实现上,工厂模式的工厂类有一个抽象类和许多具体工厂类组成,具体工厂类继承抽象工厂类,这样就实现了解耦合,更方便后期的扩展和维护。二、工厂模式使用场景1、调用者需要知道具体工厂的职责,根据需要去实例化具体的工厂,生产出具体的某个产品。2、当需要某一个产品时,生产者可以根据当前的生产产品的情况去...原创 2020-01-05 21:27:11 · 297 阅读 · 0 评论 -
设计模式之简单工厂模式-我简单,我实用!
一、简单工厂模式的概念简单工厂模式属于类的创建型模式 ,又叫做静态工厂方法模式。根据传入的参数类型不同,通过专门定义一个类来负责创建其他类的实例,被创建的实例有一个共同的父类。简单工程模式不属于23中设计模式,但因为其使用简单,在软件设计中经常被使用。二、简单工厂模式使用场景1、工厂类负责创建的对象比较少,业务逻辑比较简单、变化不大。2、客户端只需知道传入工厂类的参数,对于如何创建对象不...原创 2020-01-05 20:27:36 · 253 阅读 · 0 评论 -
设计模式之单例模式-一个人的自由自在!
一、单例模式的概念单例模式是一种对象创建型模式, 使用单例模式, 可以保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象。二、单例模式使用场景在软件开发中,我们常常有以下需求:1、在多个线程之间,共享同一个资源或者操作同一个对象。2、 在整个程序空间使用全局变量,共享资源。3、大规模系统中,为了性能的考虑,需要节省对象的创建时间等等。单例模式可以保证...原创 2019-12-29 00:15:52 · 355 阅读 · 0 评论 -
设计模式-程序员的灵魂拷问!
一、设计模式简述设计模式是用来在一个特定的环境中解决某一个问题的方案,它是一套被反复使用、经过大量验证、经过分类设计的编码经验的总结,使用设计模式可以实现代码的可复用性、让代码更易被人理解、保证代码的质量和可靠性。它就像软件工程的基石,像一座大厦的钢架一样,要成为一个真正地编程高手,学会设计模式是必修的内功。二、设计模式的原则1、开放封闭原则类的改动是通过增加代码进行的,而不是修改源代...原创 2019-12-28 21:51:49 · 349 阅读 · 0 评论