《设计模式解析第二版》读后感

共性和可变性分析:

1.先寻找共性

2.从这些共性中创建抽象

3.从共性的变化寻找派生

4.看共性之间的关系如何

在这里插入图片描述

Facade(外观)模式:是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性

在这里插入图片描述

Adapter(适配者)模式:使控制范围之外的一个原有对象与某个接口匹配。将原有类包含在另一个类中。让包含类与需要的接口匹配,调用被包含类的方法。
在这里插入图片描述

Strategy(策略)模式:可以根据所处的上下文,使用不同的业务规则或算法。对于所需算法的选择取决于发出请求的客户或者要处理的数据,将对算法的选择和算法的实现相分离,允许根据上下文进行选择。

在这里插入图片描述

Bridge(桥接)模式:将一组实现与另一组使用他们的对象分离开来。当存在一个抽象有不同实现时,Bridge模式最有用,他可以使抽象和实现相互独立的进行变化。

在这里插入图片描述

Decorator(装饰者)模式:动态的给一个对象添加功能,要使用的对象将执行所需的基本功能,但是,可能需要为这个对象添加某些功能,这些附加功能可能发生在对象的基本功能之前或者之后。可以通过创建对象链提供所需的行为。
在这里插入图片描述

Observer(观察者,又称发布-订阅)模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化的时候,所有依赖他的对象都将得到通知并自动更新。如果需要得到某件事通知的对象列表是变化的,或者是有条件的,那么Observe模式更具价值。这些变化可能是由于需求的变化,或者是由于需要通知的对象列表的变化而引起的。如果系统在不同的情况下运行,或由不同的用户运行,需要观察这列表都会不同,这时候observer模式也很有用。有的观察者只需要处理某些情况,有些并不需要处理,可以将筛选通知的责任转给subject对象,最好的实现是subject使用一个strategy模式测试通知是否需要被发出,每个观察者在注册的时候都将正确的strategy对象提供给subject对象。有时候,subject会调用观察者的update方法,传递信息,这可以避免观察者回调subject,但是经常是不同的观察者有不同的信息需求,这种情况可以再次使用strategy模式,用strategy调用观察者的update方法,同样的,观察者也需要将strategy对象提供给subject对象使用。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SEF9AoHW-1643268051979)(/Users/yechengchao/Library/Application Support/typora-user-images/image-20220127111439535.png)]

Template Method(模板)模式:定义一个操作中算法的骨架,而将一些步骤延迟到子类中。不改变算法的结构而重定义他的步骤。模板模式适用于存在几个互不相同但概念上相似的过程,每个过程的变化都是互相耦合的,因为他们都与某个过程相关。适用于要完成在某个细节层次一致的一个过程或者一系列步骤,但个别步骤在更详细的的层次上的实现可能不同。

在这里插入图片描述

工厂模式

工厂是用来实例化其他对象的方法、对象或者其他任何实体。对于对象的创建和管理,有一条很好的通用规则可以遵循:对象要么构造或者管理其他对象,要么使用对象,而不应该兼而有之。如果遵守这一约束,最终将降低耦合度,因为分工非常明确。“使用对象”与它们使用的对象是解耦的。它们无需知道有什么协作对象,甚至不需要知道可能会有什么对象,这些工作是工厂负责的。同时,工厂只知道它们在创建或者管理哪些对象,而无需知道这些对象如何使用。

在这里插入图片描述

Abstract Factory(抽象工厂)模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。将选择放在一个对象中,让这个对象负责创建要使用的对象,并使他与使用这些对象的对象分离开来。将对象的使用与对象的构造和管理分离开来。

在这里插入图片描述

Singleton(单例)模式:保证一个类仅有一个实例,并提供一个访问他的全局访问点。Singleton模式的工作原理是:用一个特殊的方法来实例化所需的对象。其中最关键的就是这个特殊的方法,调用这个方法的时候,检查对象是否已经被实例化,如果已经被实例化,该方法仅返回对该对象的一个引用。如果尚未被实例化,该方法实例化该对象并返回对此新实例的一个引用。singleton模式的本质在于每个对象都使用Singleton类的同一个实例,而不用必须负责将该实例四处传递给所有要使用他的对象。在一个协作对象对此实例所做的修改需要为另一个协助对象所见时,这点尤其重要。

在这里插入图片描述

Double-checkedLocking模式:仅适用于多线程应用程序,是Singleton的一种变化延展。

Object Pool(对象池)模式:在创建对象比较昂贵,或者对于特定类型能够创建的对象数目有限制时,管理对象的重用。在需要一个Reusable对象的时候,Client调用ReusablePool的acquireReusable方法,如果池为空,那么acquireReusable方法创建一个Reusable(如果能够),否则就等待直到有Reusable对象返回集合。

在这里插入图片描述

Factory Method(工厂方法)模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method模式使一个类的实例化延迟至其子类。一个类需要实例化另一个类的派生类,但不知道是哪一个。Factory Method允许派生类进行决策。经典实现:有一个抽象类来定义创建一系列对象的方法。为每一个可能存在的对象系列都派生一个类。
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2003 Jolt大奖 读者选择奖得主 【内容简介】 本书以作者多年来为软件开发人员(包括面向对象技术老兵和新手)讲授模式的经验为基础撰写而成,首先概述了模式的基础知识,以及面向对象分析和设计在当代软件开发中的重要性。随后,使用易懂的示例代码阐明了许多当今最有用的模式,包括它们的基础概念、优点、权衡取舍、实现技术以及需要避免的缺陷,使读者能够理解模式后面的基本原则和动机,理解为什么它们会这样运作。 本书适用于软件开发专业人士,以及计算机专业、软件工程专业的高校师生,也可作为面向对象分析与设计课程的教材。 本书是最简洁、清晰、实用的设计模式著作,应用最新的Java示例,为程序员和架构师提供了使用模式进行设计、开发和交付软件的方法。 本书以作者多年来为软件开发人员讲授模式的经验为基础撰写而成。其经验已经证明,如果能够理解模式后面的基本原则和动机,理解为什么它们会这样运作,那么将有助于你加速学习模式的进程。 阅读本书,读者能够完整地理解12个核心的设计模式和1个分析模式,了解设计模式并不是孤立存在的,多个设计模式协同工作才能创建出更加坚固的应用程序。这里所讲授的12个模式并没有涵盖所有应该学会的模式,但是理解了这12个模式,你将能够举一反三,更加容易地自学其他模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值