随笔分类 - 设计模式
摘要:一、桥梁模式的定义 桥梁模式也叫桥接模式,是一个比较简单的模式,其定义如下:将抽象和实现解耦,使得两者可以独立地变化。 桥梁模式的四个角色 Abstraction–抽象化角色 它的主页职责是定义出该角色的行为,同时保存一个对实现画角色的引用,该角色一般是抽象类。 Implementor–实现化角色
阅读全文
摘要:一、享元模式的定义 享元模式是池技术的重要实现方式,其定义如下:使用共享对象可有效地支持大量的细粒度的对象。 享元模式的定义为我们提出了两个要求:细粒度的对象和共享对象。我们知道分配太多的对象到应用程序中将有损程序的性能,同时还容易造成内存溢出,那怎么避免呢?就是享元模式提到的共享技术。 要求细粒度
阅读全文
摘要:一、解释器模式的定义 解释器模式是一种按照指定规定语法进行解析的方案,在现在项目中使用较少,其定义如下:给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。 解释器模式通用类: (1)AbstractExpression–抽象解释器 具体的解释任务由各个实现
阅读全文
摘要:一、状态模式的定义 当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。 1.状态模式中的3个角色 (1)State–抽象状态角色接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换。 (2)ConcreteState–具体状态角色每一个具体状态必须完成两个职责:本状态的行
阅读全文
摘要:一、访问者模式的定义 访问者模式是一个相对简单的模式,其定义如下:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。 角色职责 Visitor–抽象访问者 抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是visit方法的参数定义哪些对
阅读全文
摘要:一、备忘录模式的定义 备忘录模式提供了一种弥补真实世界缺陷的方法,让”后悔药”在程序的世界中真实可行,其定义如下:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 通用类(三个角色) Originator发起人角色 记录当前时刻的
阅读全文
摘要:一、门面模式的定义 门面模式也叫外观模式,是一种比较常用的封装模式,其定义如下:要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。 1.Facade门面角色 客户端可以调用这个角色的方法。此角色知晓子系统的所有功能和责任。一般情况下,本
阅读全文
摘要:一、观察者模式的定义 观察者模式也叫做发布订阅模式,它是一个在项目中经常使用的模式,其定义如下:定义对象间一种一对多的依赖关系,使得没当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。 观察者模式的几种角色名称: (1)Subject被观察者 定义被观察者必须实现的职责,它必须能够动
阅读全文
摘要:一、组合模式的定义 组合模式也叫合成模式,有时又叫做部分-整体模式,主要用来描述部分与整体的关系,其定义如下:将对象组合成的树形结构以表示”部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 组合模式的几个角色: (1)Component抽象构件角色 定义参加组合对象的共有方法和
阅读全文
摘要:一、迭代器模式的定义 它提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。迭代器是为容器服务的,那什么是容器? 能容纳对象的所有类型都可以称之为容器,例如Collection集合类型、Set类型等,迭代器就是为解决遍历这些容器中的元素而诞生的。 Iterator抽象迭代器 抽象迭
阅读全文
摘要:适配器模式的定义 将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 适配器模式的三个角色: 1.Target目标角色 该角色定义把其他类转换为何种接口,也就是我们的期望接口。 2.Adapter源角色 你想把谁转换成目标角色,这个”谁”就是
阅读全文
摘要:一、策略模式的定义 策略模式是一种比较简单的模式,也叫做政策模式,其定义如下:定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。 策略模式使用的是面向对象的继承和多态机制,我们看看策略模式的三个角色: 1.Context封装角色 它也叫上下文角色,起承上启下封装作用,屏蔽高层模块对策略、算
阅读全文
摘要:一、装饰模式的定义 装饰模式是一种笔记常见的模式,其定义如下:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。 装饰模式通用类说明 Component抽象构件 Component是一个接口或者是抽象类,就是定义我们最核心的对象。也就是最原始的对象。 注意:在装饰模式
阅读全文
摘要:一、责任链模式的定义 使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 责任链模式的重点是在”链”上,由一条链去处理相似的请求在链中决定谁来处理这个请求。 二、责任链模式的应用 1.责任链模式的优点 责任链
阅读全文
摘要:一、命令模式定义 将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或记录请求日志,可以提供命令的撤销和恢复功能。 命令模式的通用类图(这里我抽象为如下): 1.Receive接收者角色 该角色就是干活的角色,命令传递到这里是应该被执行的。 2.Command命令角色 需要执
阅读全文
摘要:一、中介者模式的定义 用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 中介者模式主要由以下几个部分组成: 1.Mediator 抽象中介者角色 抽象中介者角色定义统一的接口,用于各同事角色之间的通信. 2.Concreat
阅读全文
摘要:一、原型模式定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 二、原型模式的应用 1.原型模式的优点 (1)性能优良 原型模式是在内存二进制流的拷贝,要比直接new一个对象性能好很多,特别是要在一个循环体内产生大量的对象时,原型模式可以更好地体现其优点。 (2)逃避构造函数的约
阅读全文
摘要:一、代理模式的定义 为其他对象提供一种代理以控制对这个对象的访问。 代理模式也叫委托模式,它是一项基本设计技巧。许多其他的模式,如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了委托模式,而且在日常的应用中,代理模式可以提供非常好的访问控制。如Struts2的Form元素映射就是采用了代理
阅读全文
摘要:一、建造者模式的定义 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 二、建造者模式的应用 1.建造者模式的优点 (1)封装性 使用建造者模式可以使客户端不必知道产品内部组成的细节,如例子中我们就不需要关心每一个具体的模型内部是如何实现的,产生的对象类型就是CarMode
阅读全文
摘要:一、模板方法模式定义 定义一个操作中的算法的框架,二将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 Abstract-Class叫抽象模板,它的方法分为两类: 1.基本方法 基本方法也叫做基本操作,是由子类实现的方法,并且在模板方法被调用。 2.模板方法 可
阅读全文