![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
《大话设计模式》读书笔记
《大话设计模式》读书笔记
liuxiany(JN)
这个作者很懒,什么都没留下…
展开
-
第十三章 建造者模式(Builder)
建造者模式的定义与特点定义:将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建出不同的表示。特点:建造者模式可以将一个产品的内部表象和生产过程相分离,从而可以通过一个建造过程而创建出不同内部表象的产品对象。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。如果使用建造者模式,那么用户就只需...原创 2020-04-19 23:15:36 · 189 阅读 · 0 评论 -
第十二章 外观模式 (Facade)
外观模式的定义外观模式又称为门面模式。其定义为:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。此模式是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。外观(Facade)模式是“迪...原创 2020-04-18 21:40:42 · 172 阅读 · 0 评论 -
第十一章 迪米特法则
迪米特法则的定义迪米特法则又可以称为***最少知道法则***。其含义是:如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。迪米特法则的实现方法从迪米特法则的定义和特点可知,它强调以下两点:从依赖者的角度来说,只依赖应该依赖的对象。从被依赖者的角度说,只暴露应该暴露的方法。所以,在运用迪米特...原创 2020-04-16 20:33:33 · 174 阅读 · 0 评论 -
第十章 模板方式模式 (Template Methods)
模板方法模式的定义和特点模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。当我们要完成在某一细节层次一致的一个过程或者一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,可以考虑用模板方法模式来处理。该模式的主要优点如下。它封装了不变...原创 2020-04-13 23:00:36 · 163 阅读 · 0 评论 -
第九章 原型模式 (Prototype)
原型模式的定义与特点原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。原型模式的结构与实现模式的结构原型模式包含以下主要角色。抽象原型类:规定了具体原型对象必须实现的接口。具体原型类:实现抽象原型类的 clone...原创 2020-04-12 20:11:35 · 135 阅读 · 0 评论 -
第八章 工厂方法模式 (Factory Method)
问题引入在第四章的学习中,我们了解到了***开闭原则***,既对修改关闭,对扩展开放。反过头来去看第一章的简单工厂模式,其中的工厂类,代码如下:public class OperatorFactory { public Operator getOperator(String operator) { if ("+".equals(operator)) { ...原创 2020-04-11 20:52:42 · 201 阅读 · 0 评论 -
第七章 代理模式 (Proxy)
代理模式的定义与特点代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。代理模式的主要优点有:代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用;代理对象可以扩展目标对象的功能;代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度;其主要缺点...原创 2020-04-10 20:17:47 · 269 阅读 · 0 评论 -
第六章 装饰器模式 (Decorator)
装饰模式的定义与特点装饰(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。装饰(Decorator)模式的主要优点有:采用装饰模式扩展对象的功能比采用继承方式更加灵活。可以设计出多个不同的具体装饰类,创造出多个不同行为的组合。其主要缺点是:装饰模式增加了许多子类,如果过度使用会使程序变得很复...原创 2020-04-09 20:41:33 · 306 阅读 · 0 评论 -
第五章 里氏替换原则和依赖倒置原则
里氏替换原则的定义里氏替换原则(Liskov Substitution Principle,LSP)由麻省理工学院计算机科学实验室的里斯科夫(Liskov)女士在 1987 年的“面向对象技术的高峰会议”(OOPSLA)上发表的一篇文章《数据抽象和层次》(Data Abstraction and Hierarchy)里提出来的,她提出:继承必须确保超类所拥有的性质在子类中仍然成立(Inherit...原创 2020-04-08 21:39:56 · 331 阅读 · 0 评论 -
第四章 开放封闭原则
开闭原则的定义开闭原则(Open Closed Principle,OCP)由勃兰特·梅耶(Bertrand Meyer)提出,他在 1988 年的著作《面向对象软件构造》(Object Oriented Software Construction)中提出:软件实体应当对扩展开放,对修改关闭(Software entities should be open for extension,but c...原创 2020-04-07 21:13:57 · 141 阅读 · 0 评论 -
第三章 单一职责原则
定义单一职责原则(Single Responsibility Principle,SRP)又称单一功能原则,由罗伯特·C.马丁(Robert C. Martin)于《敏捷软件开发:原则、模式和实践》一书中提出的。这里的职责是指类变化的原因,单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分(There should never be more than one reason...原创 2020-04-06 19:39:27 · 295 阅读 · 0 评论 -
第二章 策略模式 (Strategy)
问题引入假设说,现在我们需要给超市的收银员写一款计算器,能让他们计算出顾客所购买商品的总价格,其中每种商品有不同的价格和数量。需求只有这些的话,这个计算器比较容易写:public class Cashier { public static void main(String[] args) { Scanner scanner = new Scanner(System.i...原创 2020-04-05 21:40:07 · 170 阅读 · 0 评论 -
第一章 简单工厂模式 (Simple Factory)
问题引入如果说要通过代码写一个计算器,来代替加减乘除的笔算。那该怎么写呢?比如说可以写成这样:public class Calculator { public static void main(String[] args) { double firstNumber = 0, secondNumber = 0; String sign = null;...原创 2020-04-04 18:56:03 · 134 阅读 · 0 评论