1、附录A部分-剩下的模式
桥接(Bridge)模式:不只改变你的实现,也改变你的抽象。
*桥接模式通过将实现和抽象放在两个不同的类层次中,而使它们可以独立改变。
桥接的优点:
引用
--------------------------------------------
一、将实现予以解耦,让它和界面之间不再永久绑定。
二、抽象和实现可以独立扩展,不会影响到对方。
三、对于“具体实现类”所做的改变,不会影响到客户。
--------------------------------------------
桥接的用途和缺点:
引用
--------------------------------------------
一、适合用在需要跨越多个平台的图形和窗口系统上。
二、当需要不同的方式改变接口和实现时,你会发现桥接模式很好用。
三、桥接模式的缺点是增加了复杂度。
--------------------------------------------
生成器(Builder)模式:封装一个产品的构造过程,并允许按步骤构造。
生成器的优点:
引用
--------------------------------------------
一、将一个复杂对象的创建过程封装起来。
二、允许对象通过多个步骤来创建,并且可以改变过程,这和只有一个步骤的工厂模式不同。
三、向客户隐藏产品内部的表现。
四、产品的实现可以被替换,因为客户只看到一个抽象的接口。
--------------------------------------------
生成器的用途和缺点:
引用
--------------------------------------------
一、经常被用来创建组合结构。
二、与工程模式相比,采用生成器模式创建对象的客户,需要更多的领域知识。
--------------------------------------------
责任链(Chain of Responsibility)模式:为某个请求创建一个对象链。每个对象依序检查此请求,并对其进行处理,或将它传给链中的下一个对象。
责任链的优点:
引用
--------------------------------------------
一、将请求的发送者和接受者解耦。
二、可以简化你的对象,因为它不需要知道链的结构。
三、通过改变链内的成员或调动它们的顺序,允许你动态地新增或删除责任。
--------------------------------------------
责任链的用途和缺点:
引用
--------------------------------------------
一、经常被用在窗口系统中,处理鼠标和键盘之类的事件。
二、并不保证请求一定被执行;如果没有任何对象处理它的话,它可能会落到链尾端之外(这可以是优点也可以是缺点)。
三、可能不容易观察运行时的特征,有碍于除错。
--------------------------------------------
蝇量(Flyweight)模式:让某个类的一个实例能用来提供许多“虚拟实例”。
*蝇量模式只用一个实例和一个客户对象来维护所有状态。
蝇量的优点:
引用
--------------------------------------------
一、减少运行时对象实例的个数,节省内存。
二、将许多“虚拟”对象的状态集中管理。
--------------------------------------------
蝇量的用途和缺点:
引用
--------------------------------------------
一、当一个类有许多实例,而这些实例能被同一个方法控制的时候,我们就使用蝇量模式。
二、蝇量模式的缺点在于,一旦你使用了它,那么单个的逻辑实例将无法拥有独立而不同的行为。
--------------------------------------------
解释器(Interpreter)模式:为语言创建解释器。
解释器模式的优点:
引用
--------------------------------------------
一、将每一个语法规则表示成一个类,方便语言的实现。
二、因为语法由许多类表示,所以你可以轻易地改变或扩展此语言。
三、通过在类结构中加入新的方法,可以在解释时同时增加新的行为。例如打印格式的美化或者进行复杂的验证。
--------------------------------------------
解释器模式的用途和缺点:
引用
--------------------------------------------
一、当你需要实现一个简单的语言时,使用解释器。
二、当你有一个简单的语法,而且简单比效率重要时,使用解释器。
三、可以处理脚本语言和编程语言。
四、当语法规则的数目太大时,这个模式可能会变得非常复杂。在这种情况下,使用解析器/编译器的生成器可能更合适。
--------------------------------------------
中介者(Mediator)模式:集中相关对象之间复杂的沟通和控制方式。
*每个对象都会在自己的状态改变时告诉中介者。
*每个对象都会对中介者发出的请求作出回应。
*在没有中介者的时候,所有对象都要认识其他对象,也就是说对象之间是紧耦合的。有了中介者之后,对象之间彻底解耦。
*中介者内包含了整个系统的控制逻辑。当某个装置需要一个新规则,或者一个新的装置被加入系统内,其所需要的所有逻辑都被加入中介者内。
中介者的优点:
引用
--------------------------------------------
一、通过将对象之间彼此解耦,可以增加对象的复用性。
二、通过将控制逻辑集中,可以简化系统的维护。
三、可以让对象之间传递的逻辑变得简单而且大幅减少。
--------------------------------------------
中介者的用途和缺点:
引用
--------------------------------------------
一、中介者常常被用来协调相关的GUI组件。
二、中介者模式的缺点是,如果设计不当,中介者本身会变得过于复杂。
--------------------------------------------
备忘录(Memento)模式:当需要对象返回之前的状态时(例如:你的用户请求“撤销”),就用到备忘录模式。
*备忘录模式有两个目标:
引用
--------------------------------------------
一、储存系统关键对象的重要状态。
二、维护关键对象的封装。
--------------------------------------------
备忘录的优点:
引用
--------------------------------------------
一、将被储存的对象放在外面,不要和关键对象放在一起,这可以帮助维护内聚。
二、保持关键对象的数据封装。
三、提供了容易实现的恢复能力。
--------------------------------------------
备忘录的用途和缺点:
引用
--------------------------------------------
一、备忘录用于储存状态。
二、使用备忘录的缺点:储存和恢复状态的过程可能相当耗时。
三、在Java系统中,可以考虑使用序列化(Serialization)机制储存系统的状态。
--------------------------------------------
原型(Prototype)模式:当创建给定类的实例很昂贵或很复杂时,就使用原型模式。
*原型模式允许你通过复制现有的实例来复制新的实例(在java中,这通常意味着使用clone()方法,或反序列化)。这个模式的重点在于,客户代码在不知道实例化何种特定类的情况下,可以创建出新的实例。
原型的优点:
引用
--------------------------------------------
一、向客户隐藏制造新实例的复杂性。
二、提供让客户能够产生未知类型对象的选项。
三、在某些环境下,复制对象比创建新对象更有效。
--------------------------------------------
原型的用途和缺点:
引用
--------------------------------------------
一、在一个复杂的类层次中,当系统必须从其中的许多类型创建新对象时,可以考虑原型。
二、使用原型模式的缺点:对象的复制有时相当复杂。
--------------------------------------------
访问者(Visitor)模式:当你想为一个对象的组合增加新的能力,且封装并不重要时,就使用访问者模式。
访问者的优点:
引用
--------------------------------------------
一、允许你对组合结构加入新的操作,而无需改变结构本身。
二、想要加入新的操作,相对容易。
三、访问者所进行的操作,其代码是集中在一起的。
--------------------------------------------
访问者的用途和缺点:
引用
--------------------------------------------
一、当采用访问者模式的时候,就会打破组合类的封装。
二、因为游走的功能牵扯其中,所有对组合结构的改变就更加困难。
--------------------------------------------
2、索引部分
略。
分享到:
相关推荐
笔记_HeadFirst设计模式
### Head.First 设计模式学习笔记知识点总结 #### 一、设计模式概述 设计模式是一种用于解决软件设计中常见问题的标准化方法。通过采用设计模式,开发者可以提高代码的复用性、灵活性和可维护性。《Head First 设计...
《HeadFirst设计模式学习笔记》是一份详尽的资料,旨在帮助读者深入理解并掌握设计模式这一编程领域的核心概念。设计模式是软件工程中的一种最佳实践,它在解决常见问题时提供了一种标准的解决方案,使得代码更易于...
《HeadFirst设计模式学习笔记1--策略模式Demo》 在软件工程中,设计模式是一种解决常见问题的标准方案,它提供了一种在特定情况下组织代码的模板。策略模式是设计模式中的一种行为模式,它允许在运行时选择算法或...
在“HeadFirst 设计模式学习笔记3--装饰模式 Demo”中,作者通过实例讲解了装饰模式的基本概念、结构和应用场景。这篇文章可能是从CSDN博客平台上的一个链接访问的,遗憾的是,由于我们当前无法直接访问该链接,所以...
HeadFirst设计模式 读书 笔记
总的来说,HeadFirst设计模式的学习笔记2关于观察者模式的演示,旨在帮助开发者理解如何使用观察者模式来构建可扩展的系统。通过实际的代码示例,我们可以更深入地掌握这一模式,并将其应用到日常开发中,提升代码的...
读书笔记:设计模式学习笔记和代码。《图解设计模式》《Head First 设计模式》
《Head First 设计模式》是软件开发领域内一本广受欢迎的书籍,由Eric Freeman、Elisabeth Robson、Bert Bates和Kathy Sierra四位作者共同撰写。这本书以其独特的视觉风格和易于理解的教学方法,深入浅出地介绍了...
《Head First设计模式》是一本深受开发者喜爱的设计模式学习书籍,它以易懂且生动的方式介绍了23种经典设计模式。这些模式是软件工程中经过实践验证的最佳实践,旨在提高代码的可重用性、可读性和可维护性。下面,...
《HeadFirst设计模式笔记》是深入理解软件设计思想的一份宝贵资料,主要涵盖了设计模式这一核心编程概念。设计模式是经过实践验证的解决方案模板,用于解决在软件开发中经常遇到的问题,尤其在面向对象设计中。这篇...
在《Head First 设计模式学习笔记(十四)模式的组合使用》中,作者探讨了如何在实际编程中灵活地组合多种设计模式以解决复杂问题。这篇文章可能是基于《Head First 设计模式》这本书的一个章节,该书是设计模式领域...
本项目为《Head First 设计模式》的Java语言学习笔记与实战练习源码集合,包含104个文件,主要包括88个Java源文件、12个Markdown文档、3个XML配置文件及少量其他辅助文件。内容涵盖设计模式的学习笔记以及相应的代码...
《Head First设计模式》是软件开发领域的一本经典著作,其深入浅出地介绍了23种设计模式。第一章主要讲解的是策略模式,这是一种行为设计模式,它使你能在运行时改变对象的行为。策略模式的核心思想是定义一系列算法...
根据提供的信息,“Head First设计模式”是一本广受好评的设计模式书籍。虽然具体的章节内容没有给出,但从描述中得知本书的第22页至39页涵盖了重要的设计模式概念,因此我们将围绕这些页面可能涉及的设计模式进行...
著名的《Head First Design ...由于书本过长,整理出笔记帮助回想起设计模式。文件是docx格式,只能由OFFICE Word 2007之后的版本打开,内附Visio类图文件。本文由个人整理摘录,部分内容来自书本,仅供学习使用。
以上只是《Head First Servlets & JSP》一书中的部分核心知识点,实际内容还包括过滤器、监听器、MVC设计模式、JSTL等更广泛的主题,旨在帮助读者全面理解和掌握Servlet和JSP技术。通过深入学习,开发者能够构建高效...
设计模式Head First学习笔记,以及使用java编写的设计模式源码,Java原生sdk实现23种设计模式