随笔分类 -  Java设计模式

摘要:范围\目的 创建型模式 结构型模式 行为型模式 类模式 工厂方法 (类)适配器 模板方法、解释器 对象模式 单例 原型 抽象工厂 建造者 代理 (对象)适配器 桥接 装饰 外观 享元 组合 策略 命令 职责链 状态 观察者 中介者 迭代器 访问者 备忘录 阅读全文
posted @ 2019-10-16 10:52 千彧 阅读(159) 评论(0) 推荐(0)
摘要:在阎宏博士的《JAVA与模式》一书中开头是这样描述模板方法(Template Method)模式的: 模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑 阅读全文
posted @ 2017-08-09 20:13 千彧 阅读(613) 评论(0) 推荐(0)
摘要:访问者模式表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。从定义可以看出结构对象是使用访问者模式的必备条件,而且这个结构对象必须存在遍历自身各个对象的方法,类似于Java中的Collection。访问者模式的目的是要把处理从数据结构中分离出来, 阅读全文
posted @ 2017-08-09 20:04 千彧 阅读(435) 评论(0) 推荐(0)
摘要:外观(Facade)模式的定义:是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。 医院的例子 现代的软件系统都是比较复杂的,设计师处理复杂系 阅读全文
posted @ 2017-08-09 18:34 千彧 阅读(920) 评论(0) 推荐(0)
摘要:定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态 类型:行为类 类图: 我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态。比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行 阅读全文
posted @ 2017-08-09 17:27 千彧 阅读(556) 评论(0) 推荐(0)
摘要:(给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。) 解释器模式的定义是一种按照规定语法进行解析的方案,在现在项目中使用的比较少,其定义如下: Given a language, define a representation for its gramm 阅读全文
posted @ 2017-08-09 10:47 千彧 阅读(332) 评论(0) 推荐(0)
摘要:(定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。) 例:button 与 listener ,在使用时具体根据情况实例化listener,做不同的操作。 背景 在软件开发中常常遇到这种情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功 阅读全文
posted @ 2017-08-09 07:03 千彧 阅读(752) 评论(0) 推荐(0)
摘要:(它提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。) 迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。 迭代器模式属于行为型模式。 介绍 意图:提供一种方 阅读全文
posted @ 2017-08-08 17:47 千彧 阅读(334) 评论(0) 推荐(0)
摘要:(将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。) 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式 阅读全文
posted @ 2017-08-06 10:49 千彧 阅读(3631) 评论(0) 推荐(0)
摘要:中介者模式就是利用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地互相引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。 就像租房的中介系统,房主跟租房者不需要知道彼此只需要,只要在中介系统发布消息。 如此房主跟租房者之间不需要建立复杂关系,他们都只需要跟中介建立关系。 通常在 阅读全文
posted @ 2017-08-05 19:07 千彧 阅读(474) 评论(0) 推荐(0)
摘要:(当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。) 在软件开发过程中,很多对象也会像水和信号灯一样具有多种状态,这些状态在某些情况下能够相互转换,而且对象在不同的状态下也将有不同的行为。最直接的解决方案是将所有可能考虑到,然后使用if else 语句来进行不同情况的处理,但是这 阅读全文
posted @ 2017-08-05 11:49 千彧 阅读(957) 评论(0) 推荐(0)
摘要:(使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。) 从名字中看出 ,系统中将会存在多个有类似处理能力的对象,当一个请求触发后,请求将在这些对象组成的链条中传递直到找到最合适的处理对象,并进行处理。 责任链 阅读全文
posted @ 2017-08-05 08:31 千彧 阅读(240) 评论(0) 推荐(0)
摘要:建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应的作出反应。 在此发生改变的对象称之为观察目标(被观察者),而被通知的对象称为观察者,一个观察者目标可以对应多个观察者,而这些观察者之间没有互相联系,可以根据需要增加和删除观察者,使系统更易于扩展。 阅读全文
posted @ 2017-08-04 11:45 千彧 阅读(451) 评论(0) 推荐(0)
摘要:组合模式允许你将对象组合成树形结构来表现”部分-整体“的层次结构,使得客户以一致的方式处理单个对象以及对象的组合。组合模式实现的最关键的地方是——简单对象和复合对象必须实现相同的接口。这就是组合模式能够将组合对象和简单对象进行一致处理的原因。 组合模式多个对象形成树形结构以表示“整体--部分”的结构 阅读全文
posted @ 2017-08-04 09:02 千彧 阅读(391) 评论(0) 推荐(0)
摘要:桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。 假如我们需要建立一个日志记录器,可以实现数据库记录和文本记录。根据我们的经验我们应该将日志记录抽 阅读全文
posted @ 2017-08-03 18:59 千彧 阅读(782) 评论(0) 推荐(0)
摘要:.(为其他对象提供一种代理以控制对这个对象的访问。) 在实际的软件开发中,我们经常面临着对一个对象进行访问控制的问题,由于跨越网络或安全方面等原因不能直接或不需要直接被访问,直接访问的代价会给系统带来不必要的复杂性。 如何在客户端程序与目标对象之间增加一层中间层,通过它来代替目标对象来完成客户程序对 阅读全文
posted @ 2017-08-03 17:32 千彧 阅读(484) 评论(0) 推荐(0)
摘要:(使用共享对象可有效地支持大量的细粒度的对象。) 假设开发一个围棋程序,围棋程序的围棋的棋子包含了颜色、大小、位置等信息。在定义一个棋盘容器来存放这些棋子。 我们可以发现,棋盘的成员变量包含了一个棋子所有的属性,我们需要为每一个颜色大小开辟内存来储存这些信息,而一盘棋需要上百个棋子,这种实现方法占得 阅读全文
posted @ 2017-08-03 13:34 千彧 阅读(423) 评论(0) 推荐(0)
摘要:将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 (1)目标(Target)——客户所期待得到的接口,目标可以是具体的或抽象的类,也可以是接口。 (2)源(Adaptee)——已经存在的、需要适配的类。源可以是具体的或抽象的类,也可以是接口 阅读全文
posted @ 2017-08-02 15:44 千彧 阅读(657) 评论(0) 推荐(0)
摘要:适用于以下情况: (1)需要扩展一个类的功能,或给一个类添加附加职责。 (2)需要动态的给·一个对象添加功能,这些功能可以再动态的撤销。 (3)需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继承关系变得不现实。 (4)当不能采用生成子类的方法进行扩充时,一种情况是:可能有大量独立的扩 阅读全文
posted @ 2017-08-02 13:56 千彧 阅读(460) 评论(0) 推荐(0)
摘要:有些对象创建过程较为复杂,而且有些时候需要频繁的创建,原型模式通过给出一个原型对象来指明所要创建的对象的类型,然后复制这个原型对象的方法创建更多同类型的对象。这就是原型模式的动机。 原型模式的主要思想是基于现有对象克隆一个新的对象出来,一般是有对象的内部提供克隆的方法,通过该方法返回一个对象的副本。 阅读全文
posted @ 2017-08-02 10:11 千彧 阅读(201) 评论(0) 推荐(0)