研磨设计模式笔记

创建型模式



简单工厂 Simple factory


  • 定义:提供一个创建对象实例的功能,而无须关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类。
  • 功能:对象创建
  • 本质:选择实现

在这里插入图片描述

工厂方法 Factory method


  • 定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到其子类。
  • 功能
    • 让父类在不知道具体实现的情况向下,完成自身的功能调用
    • 具体的实现延迟到子类来实现
  • 本质:延迟到子类来选择实现。
  • 应用:IoC/DI
    在这里插入图片描述

抽象工厂 Abstract factory


  • 定义:提供一个创建一系列相关或互相依赖对象的接口,而无需指定他们具体的类。
  • 功能:为一系列相关对象或相互依赖的对象创建一个接口
  • 本质:选择产品簇的实现
    在这里插入图片描述
    在这里插入图片描述

生成器 Builder


  • 定义:将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。
  • 功能:分步骤地、细化地构建复杂的产品,即一步一步解决构造复杂对象的问题。
  • 本质:分离整体构建算法和部件构造。
    在这里插入图片描述

原型 Prototype


  • 定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。
  • 功能:通过克隆来创建新的对象实例,并复制原型属性的值。
  • 本质:克隆生成对象。
    在这里插入图片描述

单例 Singleton


  • 定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
  • 功能:创建并提供一个全局唯一的对象实例。
  • 本质:控制实例数目。
    在这里插入图片描述

结构型模式



适配器 Adapter


  • 定义:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
  • 功能&本质:复用已有功能,转换匹配。
    在这里插入图片描述

桥接 Bridge


  • 定义:将抽象部分和它的实现部分分离,使它们都可以独立地变化。
  • 功能:连接抽象部分和实现部分,实现互相通信和使用,减少类数目,提高类复用。
  • 本质:分离抽象与实现
    在这里插入图片描述

组合 Composite


  • 定义:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
  • 功能:以一个统一的方式来操作组合对象和叶子对象
  • 本质:统一叶子对象和组合对象
    在这里插入图片描述
    在这里插入图片描述

装饰 Decorator


  • 定义:动态地给一个对象增加一些额外的职责。就增加功能来说,装饰模式比生成子类更为灵活。
  • 功能:通过增加不同的装饰器灵活地改变一个对象的功能
  • 本质:动态组合
    在这里插入图片描述
    在这里插入图片描述

外观 Facade


  • 定义:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
  • 功能:让外部减少与子系统内多个模块的交互,松散耦合,从而让外部更简单地使用子系统。
  • 本质:封装交互,简化调用。
    在这里插入图片描述

享元 Flyweight


  • 定义:运用共享技术有效地支持大量细粒度的对象。
  • 功能:通过共享不变的部分,达到减少对象数量并节约内存的目的。
  • 本质:分离与共享
    在这里插入图片描述

代理 Proxy


  • 定义:为其他对象提供一种代理以控制对这个对象的访问。
  • 功能:通过创建一个代理对象代表真实的对象去操作。
  • 本质:控制对象访问。
    在这里插入图片描述
    在这里插入图片描述

行为模式



职责链 Chain of responsibility


  • 定义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
  • 功能:用来处理“有多个对象都有机会处理某一特定请求,并对该特定请求进行封装”。
  • 本质:分离职责,动态组合。
    在这里插入图片描述
    在这里插入图片描述

命令 Command


  • 定义:将一个请求封装为一个对象,从而使你可用不同的请求对客户端进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
  • 功能:将请求封装为对象,定义统一执行操作的接口,该对象可被存储、转发、记录、处理、撤销等。
  • 本质:封装请求。
    在这里插入图片描述

解释器 Interpreter


  • 定义:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
  • 功能:使用解释器对象来表示和处理相应的语法规则,一般一个解释器处理一条语法规则。
  • 本质:分离实现,解释执行。
    在这里插入图片描述

迭代器 Iterator


  • 定义:提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。
  • 功能:提供聚合对象的迭代访问。
  • 本质:控制访问聚合对象中的元素。
    在这里插入图片描述

中介者 Mediator


  • 定义:用一个中介对象来封装一系列的对象交互。中介者使得各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。
  • 功能:封装对象的交互。
  • 本质:封装交互。
    在这里插入图片描述

备忘录 Memento


  • 定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
  • 功能:保存及恢复对象状态。
  • 本质:保存和恢复内部状态。
    在这里插入图片描述

观察者 Observer


  • 定义:定义对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖它的对象都得到通知并被自动更新。
  • 功能:注册通知。
  • 本质:触发联动。
    在这里插入图片描述

状态 State


  • 定义:允许一个对象再起内部状态改变时改变它的行为。对象看起来似乎修改了它的类。
  • 功能:由状态决定对象的行为。
  • 本质:根据状态来分离和选择行为。
    在这里插入图片描述

策略 Strategy


  • 定义:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。
  • 功能:把具体的算法从具体的业务处理中独立出来,把它们实现成为单独的算法类,从而形成一系列的算法,并让这些算法可以互选替换。
  • 本质:分离算法,选择实现。
    在这里插入图片描述

模板方法 Template method


  • 定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
  • 功能:固定算法骨架,让具体算法实现可扩展。
  • 本质:固定算法骨架。在这里插入图片描述

访问者 Visitor


  • 定义:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
  • 功能:访问者模式能给一系列对象透明地添加新功能,从而避免在维护期间对这一系列对象进行修改,而且还能变相实现复用访问者所具有的功能。
  • 本质:预留通路,回调实现。
    在这里插入图片描述
内容简介 · · · · · · 《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,培养正确的“设计观”;中高级内容则深入探讨如何理解这些模式,包括模式中蕴涵什么样的设计思想,模式的本质是什么,模式如何结合实际应用,模式的优缺点以及与其他模式的关系等,以期让读者尽量去理解和掌握每个设计模式的精髓所在。 《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。也可以作为高效学生深入学习设计模式的参考读物! 作者简介 · · · · · · 陈臣:十年Java/JavaEE开发经验,高级系统架构师,功力深厚,技术精湛,精通Java/JavaEE相关技术和多种开源框架,尤其擅长系统分析和架构设计。从事过专业的中间件研发,包括基于组件的Web页面框架、基于WFMC的工作流中间件、类似于Hibernate的ORM框架等等;参与或主持了多个中大型的企业级应用项目,拥有多年项目经理、技术部经理的管理经验。个人博客:http://www.javass.cn/javapeixunxxyd/index.html 王斌:从事Java/JavaEE开发五年,系统架构师,精通Ejb、Struts、Spring、Hibernate、iBatis等框架技术,擅长设计模式和Eclipse插件开发。作为架构小组骨干,参与了国旅电子商务平台、南王酒庄等多个项目的开发,开发并维护有constance4j、myxstream、SimpleMapping等多个公司内部开源框架,深得多个项目组好评。
本电子书一共两个压缩文档,该文档为part1。 《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,培养正确的“设计观”;中高级内容则深入探讨如何理解这些模式,包括模式中蕴涵什么样的设计思想,模式的本质是什么,模式如何结合实际应用,模式的优缺点以及与其他模式的关系等,以期让读者尽量去理解和掌握每个设计模式的精髓所在。    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。也可以作为高效学生深入学习设计模式的参考读物! 第1章 设计模式基础    第2章 简单工厂    第3章 外观模式    第4章 适配器模式(Adapter)    第5章 单例模式(Singleton)    第6章 工厂方法模式(Factory Method)    第7章 抽象工厂模式(Abstract Factory)    第8章 生成器模式(Builder)    第9章 原型模式(Prototype)    第10章 中介者模式(Mediator)    第11章 代理模式(Proxy)    第12章 观察者模式(Observer)    第13章 命令模式(Command)    第14章 迭代器模式(Iterator)    第15章 组合模式(Composite)    第16章 模板方法模式(Template Method)    第17章 策略模式(Strategy)    第18章 状态模式(State)    第19章 备忘录模式(Memento)    第20章 享元模式(Flyweight)    第21章 解释器模式(Interpreter)    第22章 装饰模式(Decorator)    第23章 职责链模式(Chain of Responsibility)    第24章 桥接模式(Bridge)    第25章 访问者模式(Visitor)    附录A常见面向对象设计原则    附录BUML简介    参考文献
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值