大话设计模式
To-String
Programming changes the world
展开
-
大话设计模式 —— 第十五章《抽象工厂模式》C++ 代码实现
目录前言定义优点缺点应用场景抽象工厂模式与工厂方法模式的区别总结前言学习完工厂方法模式,发现工厂方法模式存在一个严重的问题:一个具体工厂只能创建一类产品而在实际过程中,一个工厂往往可能需要生产不同类型的产品。为了解决上述的问题,可以使用抽象工厂模式来解决。定义为创建一组相关或者相互依赖的对象提供一个接口,而且无须指定它们的具体类。...原创 2019-04-17 21:00:59 · 216 阅读 · 0 评论 -
大话设计模式 —— 第十七章《适配器模式》C++ 代码实现
目录定义优点缺点使用场景在我们平时的开发过程中,碰到要在两个完全没有关系的类之间进行交互,第一个解决方案是修改各自类的接口,但是如果无法修改源代码或者其他原因导致无法更改接口,此时怎么办?这种情况我们往往会使用一个 Adapter ,在这两个接口之间创建一个粘合剂接口,将原本无法协作的类进行兼容,而且不用修改原来两个模块的代码,符合开闭原则。定义适配器模式(也叫...原创 2019-04-20 15:53:18 · 194 阅读 · 0 评论 -
大话设计模式 —— 第二十一章《单例模式模式》C++ 代码实现
目录定义优点缺点适用场景单例模式(Singleton Pattern , 也称单件模式;属于创建型模式)是23个设计模式中最简单的设计模式之一。它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。简单说来,单例模式的作用就是保证在整个应...原创 2019-05-14 15:32:03 · 188 阅读 · 0 评论 -
大话设计模式 —— 第十八章《备忘录模式》C++ 代码实现
目录定义备忘录模式结构图优点缺点使用场景应用实例与命令模式的关系定义在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。 属于行为型设计模式很多时候我们总是需要记录一个对象的内部状态,这样做的目的就是为了允许用户取消不确定或者错误的操作,能够恢复到他原先的状态,使得他有”后悔药”可吃。 ...原创 2019-04-23 15:59:01 · 272 阅读 · 0 评论 -
大话设计模式 —— 第十九章《组合模式》C++ 代码实现
目录定义优点缺点使用场景组合模式和解释器模式的区别组合模式(Composite Pattern),也称作部分整体模式(Part-Whole Pattern),是用于把一组相似的对象当作一个单一的对象。并根据一个树状结构来组合对象;而其设计目的就是将对象组合成树形结构以表示"部分-整体"的层次结构。这种模式创建了一个包含自己对象组的类,对象都提供一个统一的方法去访问相应的对象...原创 2019-04-25 17:05:58 · 405 阅读 · 0 评论 -
大话设计模式 —— 第二十四章《职责链模式》C++ 代码实现
目录简述定义优点缺点模式的应用场景模式的扩展总结简述职责链模式(也被称为责任链模式)(Chain of Responsibility),行为型设计模式之一。什么是责职责链呢?这个链的形式更像是数据结构中的单链表,链中的每个节点都有自己的职责,同时也持有下一个节点的引用。属于自己职责范围内的请求就自行处理,并完成请求的处理;而不属于的职责就传递给下一个节点。每...原创 2019-05-21 15:35:57 · 196 阅读 · 0 评论 -
大话设计模式 —— 第二十二章《桥接模式》C++ 代码实现
目录定义优点缺点应用场景继承 VS 桥接模式定义桥接模式也叫桥梁模式,是一种结构型设计模式。主要目的是实现类与类之间的解耦。定义为:将抽象部分与它的实现部分分离 (这样它们就实现了解耦),使它们都可以独立的变化。而不会直接影响到其他部分。该模式充分利用了类与类之间的依赖关系,抽象类依赖实现类。在抽象类中调用所依赖类的方法,这样,抽象类和实现类就可以互不干...原创 2019-05-16 15:38:25 · 204 阅读 · 0 评论 -
大话设计模式 —— 第二十六章《享元模式》C++ 代码实现
目录定义优点缺点应用场景在面向对象程序设计过程中,有时会面临要创建大量相同或相似对象实例的问题。创建那么多的对象将会耗费很多的系统资源,它是系统性能提高的一个瓶颈。例如,围棋和五子棋中的黑白棋子,图像中的坐标点或颜色,局域网中的路由器、交换机和集线器,教室里的桌子和凳子等。这些对象有很多相似的地方,如果能把它们相同的部分提取出来共享,则能节省大量的系统资源。也就是说在一个系...原创 2019-05-25 15:52:09 · 171 阅读 · 0 评论 -
大话设计模式 —— 第二十五章《中介者模式》C++ 代码实现
目录定义优点缺点应用场景代理模式、外观模式和中介者模式对比在现实生活中,常常会出现好多对象之间存在复杂的交互关系,这种交互关系常常是“网状结构”,它要求每个对象都必须知道它需要交互的对象。我想到了生活中的中介。有人有房子想出租(房东),但是他不想自己去找那些想租房子的人(租客),也不想保存那些想租房子的人的信息。而有些人想租房子(租客),但不知道哪些房源出租,也不想...原创 2019-05-23 17:15:19 · 176 阅读 · 0 评论 -
大话设计模式 —— 第二十三章《命令模式》C++ 代码实现
目录定义优点缺点适合使用命令模式的情景命令模式是一种行为型设计模式,它是降低类之间耦合度的一种方式。在命令模式中,将每个具体的命令封装在一个独立的类中,调用者只需调用特定的命令即可实现相应的功能。各个命令类会自动执行 执行者类中对应的命令操作。 这样就可实现“行为请求者(Invoker)” 与 “行为实现者(Receiver)” 之间的解耦。定义将一个请求封装成一个...原创 2019-05-19 15:15:14 · 178 阅读 · 0 评论 -
大话设计模式 —— 第二十七章《解释器模式》
定义解释器模式是一种类行为型模式,定义为:给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。简单地说,解释器就相当于翻译器一样,将一种语言解释为另一种语言。该模式使用的场景比较少,一般而言,该模式对于我们开发人员来说,基本上都用不到。除非你想自己开发一种语言。解释器模式真正开发起来很难,就相当于自己开发了一种语言给别人用。...原创 2019-05-27 15:09:53 · 158 阅读 · 0 评论 -
大话设计模式 —— 第十六章《状态模式》C++ 代码实现
目录定义优点缺点使用场景状态模式是一种行为型设计模式。当某个对象在不同状态下有不同行为时使用,在该模式中,我们将对象的不同状态定义成不同的类,在这些状态类下有它们各自的行为,然后在客户端调用 Context 类,而不需要显示地去设置各个状态之间的转换定义允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。该模式的本质是对象的状态改变时,会...原创 2019-04-19 21:51:14 · 219 阅读 · 0 评论 -
大话设计模式 —— 第二十章《迭代器模式》C++ 代码实现
目录定义缺点应用场景总结定义迭代器模式(行为设计模式):提供一种方法顺序访问一个容器对象中的各个元素,而又不需要暴露该对象的内部数据存储的实现。Iterator(抽象迭代器):它定义了访问和遍历元素的接口,声明了用于遍历数据元素的方法,例如:用于获取第一个元素的first()方法,用于访问下一个元素的next()方法,用于判断是否还有下一个元素的has...原创 2019-04-28 16:40:53 · 219 阅读 · 0 评论 -
大话设计模式 —— 第十四章《观察者模式》C++ 代码实现
目录定义结构优点缺点适用场景定义观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象对象同时监视某一个主题对象。这个主题对象的状态变化时,会通知所有的观察者对象,使他们能够自动更新自己的状态。举个例子:观察者模式可以理解为, 在一个一对多的关系模式中, 例如一个微信公众号有多...原创 2019-04-14 18:12:37 · 250 阅读 · 1 评论 -
大话设计模式 —— 第一章《简单工厂模式》C++代码实现
简介简单工厂模式(Simple Factory Pattern)属于类的创建型模式(但是简单工厂模式不属于23种设计模式之一),又叫静态工厂方法模式(Static FactoryMethod Pattern), 是通过专门定义一个类来负责创建其他类的实例,这个类可以根据不同变量返回不同类的产品实例。被创建的实例通常都具有共同的基类。ProductA、ProductB 和 Prod...原创 2019-03-15 20:15:21 · 391 阅读 · 0 评论 -
大话设计模式——设计模式的六大原则
目录单一职责原则(Chapter3)开放封闭原则(Chapter4)里氏代换原则(Chapter5)依赖倒转原则(Chapter5)迪米特原则((Chapter11)单一职责原则(Chapter3)单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小。单一职责原则(Single Responsibility Principle, SRP):一个类只负责一...原创 2019-03-27 13:53:17 · 328 阅读 · 2 评论 -
大话设计模式 —— 第二章《策略模式》C++ 代码实现
目录策略模式介绍优点缺点使用场合策略模式介绍简单工厂模式只是解决对象的创建问题,而且由于工厂本身包括了所有的收费方式,商场可能经常性的更改打折额度和返利额度,每次维护或者扩展收费方式都要改动这个工厂,以致代码需要重新编译部署,这不是一种好方法。而且为了创建不同的对象产品使用了switch case(或if else)的形式实现代码,这样违背了开闭原则,即对扩展开放、对修改封...原创 2019-03-19 10:47:34 · 246 阅读 · 0 评论 -
大话设计模式 —— 第六章《装饰模式》C++ 代码实现
目录概念介绍优点缺点应用场景装饰模式的重点概念装饰器模式是一种属于结构型的设计模式,它通过一层一层地包装类方式来为类增加新的方法,本质是利用组合,同时也利用了继承。与单纯的继承相比,它更加灵活,因为装饰类之间可以动态地自由组合来添加功能。给对象添加方法的方式有多种,通常,当说到给对象添加方法时,最直接的就是直接在该对象的类中增加新的方法,但这样在最上方增加方法,...原创 2019-03-29 16:02:48 · 283 阅读 · 0 评论 -
大话设计模式 —— 第八章《工厂方法模式》C++ 代码实现
目录前言工厂方法模式定义优点缺点适合情景前言在本书的第一章的简单工厂模式,发现简单工厂模式存在一系列问题:工厂类集中了所有实例(产品)的创建逻辑,一旦这个工厂不能正常工作,整个系统都会受到影响; 违背“开放 - 关闭原则”,一旦添加新产品就不得不修改工厂类的逻辑,那样就需要工厂类中做判断(比如:if),根据不同的条件或者前提创建不同的对象。这也就造成了,当增加新...原创 2019-04-01 16:31:51 · 233 阅读 · 0 评论 -
大话设计模式 —— 第十三章《建造者模式》C++ 代码实现
目录简介主要作用优点缺点使用场景建造者模式与工厂模式的区别简介建造者(也叫生成器模式,属于创建型模式)模式:将一个复杂对象的构建过程与它的构建细节分离,使得同样的构建过程可以执行不同的表示。首先,将复杂对象的创建过程和部件的表示分离出来,其实就是把创建过程和自身的部件解耦,使得构建过程和部件都可以自由扩展,两者之间的耦合降到最低。然后,再是相同的构建过程可以创建...原创 2019-04-10 17:03:28 · 305 阅读 · 0 评论 -
大话设计模式 —— 第十章《模板方法模式》C++ 代码实现
目录定义优点缺点使用场景模板方法模式是一种基于继承的代码复用的行为型模式;在其结构中只存在父类与子类之间的继承关系。通过使用模板方法模式,可以将一些复杂流程的实现步骤封装在一系列基本方法中,在抽象父类中提供一个称之为模板方法的方法来定义这些基本方法的执行次序,而通过其子类来覆盖某些步骤,从而使得相同的算法框架可以有不同的执行结果。本篇博客我们一起来学习模版方法模式。...原创 2019-04-06 16:40:14 · 214 阅读 · 0 评论 -
大话设计模式 —— 第七章《代理模式》C++ 代码实现
目录定义代理模式分类代理模式的优点应用场景定义代理模式,也称为委托模式。定义为:为其他对象提供一种代理以间接控制对这个对象的访问代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口。其实代理模式无论是在日常开发还是设计模式中,基...原创 2019-03-28 15:54:32 · 206 阅读 · 0 评论 -
大话设计模式 —— 第九章《原型模式》C++ 代码实现
目录概述定义优点缺点使用场景注意事项浅复制和深复制概述在某些情况下,可能不希望反复使用类的构造函数创建许多不同的对象,而是希望使用该类创建一个对象后,以该对象为原型得到该对象的若干个副本 ( 分深拷贝 和 浅拷贝)。也就是说,当一个对象定义为原型对象时,该对象中提供了一个 Clone 方法,然后该原型对象调用此方法可以“克隆”原型对象得到一个新对象。原型对象 ...原创 2019-04-03 18:27:19 · 353 阅读 · 0 评论 -
大话设计模式 —— 第十二章《外观模式》C++ 代码实现
目录概述定义优点缺点使用场景与适配器模式的区别概述 外观模式是一种使用频率非常高的结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的接口,降低子系统与客户端的耦合度,且客户端调用非常方便。定义外观模式(也称为门面模式):为子系统中的一组接口提供一个一致的接口,此模式定义了一个更高级的接口,这个结口使...原创 2019-04-09 21:26:42 · 224 阅读 · 0 评论 -
大话设计模式 —— 第二十八章《访问者模式》
访问者模式,是行为型设计模式之一。访问者模式是一种将数据操作与数据结构分离的设计模式,它可以算是 所有设计模式中最复杂的一个,但它的使用频率并不是很高,大多数情况下,你并不需要使用访问者模式,但是当你一旦需要使用它时,那你就是需要使用它了。定义封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。简而言之,就是访问者去访问...原创 2019-05-28 15:53:26 · 211 阅读 · 0 评论