设计模式
CmdSmith
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
桥梁模式(Bridge) Java实现
桥梁模式 桥梁(Bridge)模式定义 桥梁模式是对象的结构模式。又称为柄体(Handle and Body)模式或接口(interface)模式。桥梁的用意是“将抽象化(Abstraction)与实现化(Implementation)解耦,使得二者可以独立地变化。 桥梁模式的用意 桥梁模式虽然不是一个使用频率很高的模式,但是熟悉这个模式对于理解面向对象的设计原则,包括“开-闭”原则以及组合/聚合...原创 2019-06-06 15:40:27 · 596 阅读 · 0 评论 -
调停者模式(Mediator) Java实现
调停者模式 调停者模式(Mediator)的定义 调停者模式是对象的行为模式。调停者模式包装了一系列对象相互的方式,使得这些对象不必互相明显作用。从而使它们可以较为松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用.从而保证这些相互作用可以彼此独立地变化。 为什么需要调停者 如下图所示,这个示意图中有大量的对象,这些对象既会影响别的对象,又会被别...原创 2019-06-08 16:48:26 · 432 阅读 · 0 评论 -
解释器模式(Interpreter) Java实现
解释器模式 解释器模式(Interpreter)的定义 解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。 解释器模式的结构 下面就以一个示意性的系统为例,讨论解释器模式的结构。系统的结构图如下所示: 模式所涉及的角色如下所示: (1)抽象表达式(Expression)角色:声明一个所有的具体表...原创 2019-06-08 16:47:51 · 819 阅读 · 0 评论 -
访问者模式(Visitor) Java实现
访问者模式 访问者模式(Visitor)的定义 访问者是对象的行为模式。访问者模式的目的是封装一些施加于某些数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。 分派的概念 变量被声明时的类型叫做变量的静态类型(Static Type),有些人又把静态类型叫做明显类型(Apparent Type);而变量所引用的对象的真实类型又叫做变量的实际类型(Actual ...原创 2019-06-08 16:46:15 · 667 阅读 · 0 评论 -
状态模式(State) Java实现
状态模式 状态模式(State)定义 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式。 状态模式允许一个对象在其内部状态改变的时候,改变其行为。这个对象看上去就像改变了它的类一样。 状态模式的结构 用一句话来表述,状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一...原创 2019-06-08 16:45:35 · 1042 阅读 · 0 评论 -
备忘录模式(Memento)Java实现
备忘录模式 备忘录模式(Memento)模式的: 备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。 备忘录对象是一个用来存储另一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉(Capture)住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录模式常常与命令模式和迭代子模式一...原创 2019-06-08 16:44:45 · 550 阅读 · 0 评论 -
命令模式(Command) Java实现
命令模式 命令模式(Command)的定义 命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Transaction)模式。 命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 命令模式的结构 命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的...原创 2019-06-08 16:43:43 · 1972 阅读 · 0 评论 -
责任链模式(Chain of Responsibility) Java实现
责任链模式 责任链模式(Chain of Responsibility)定义 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。 从击鼓传花谈起 击鼓串花是一种热闹而...原创 2019-06-08 16:42:27 · 8470 阅读 · 0 评论 -
迭代子模式(Iterator) Java实现
迭代子模式 迭代子模式(Iterator)的定义 迭代子模式又叫游标模式(Cursor),是对象的行为模式。迭代子模式可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象(internal representation)。 聚集和Java聚集 多个对象聚在一起形成的总体称之为聚集(Aggregate),聚集对象是能够包容一组对象的容器对象。聚集依赖于聚集结构的抽象化,具有复杂化和多样性。数组就是...原创 2019-06-08 16:40:45 · 430 阅读 · 1 评论 -
观察者模式(Observer) Java实现
观察者模式 观察者模式(Observer)的定义 观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。 观察者模式定义了一种一对多的依赖关系,让多个观察者同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能...原创 2019-06-06 15:45:02 · 7315 阅读 · 2 评论 -
模板方法(Template Method) Java实现
模板方法模式 模板方法(Template Method)的定义 模板方法是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方法实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。 模板方法模式的结构 模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术。...原创 2019-06-06 15:43:49 · 1046 阅读 · 0 评论 -
策略模式(Strategy) Java实现
策略模式 策略模式(Strategy)模式定义 策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以互相替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。 策略模式的结构 策略模式是对算法的包装,是把算法的责任和算法本身分割开来,委派给不用的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类,...原创 2019-06-06 15:43:06 · 444 阅读 · 0 评论 -
不变模式(Immutable) Java实现
不变模式 不变(Immutable)模式的定义 一个对象的状态在对象被创建之后就不再变化,这就是所谓的不变模式。 不变模式的结构 不变模式可增强对象的强壮性(robustness)。不变模式允许多个对象共享同一个对象,降低了该对象进行并发访问时的同步化开销。如果需要修改一个不变对象的状态,那么就需要建立一个新的同类型对象,并在创建时将这个状态存储在新对象里。 不变模式只涉及到一个类。一个类的内部状...原创 2019-06-06 15:42:07 · 648 阅读 · 0 评论 -
简单工厂(Simple factory)模式 Java实现
简单工厂模式 简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。 简单工厂模式的场景 应用系统需要支持多种登陆方式如:口令认证、域认证。自然的做法就是建立一个各种登陆方式都适用的接口。 public interface Login { boolean verify(String us...原创 2019-05-01 23:44:46 · 449 阅读 · 0 评论 -
门面模式(外观模式)(Facade) Java实现
门面模式(外观模式) 门面(Facade)模式定义: 门面模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。 医院的例子 现代的软件系统都是比较复杂的,设计师处理复杂的系统的一个常见方法便是将其“分而治之”,把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验...原创 2019-06-06 15:39:33 · 830 阅读 · 0 评论 -
代理模式(Proxy) Java实现
代理模式 代理(Proxy)定义 代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。 代理模式结构 所谓代理,就是一个人或者机构代表另一个人或者机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式类图如下: 在代理模式中的角色: 抽象对象角色:声明了目标对象和代理对象的共...原创 2019-06-06 15:32:20 · 307 阅读 · 0 评论 -
享元模式(Flyweight) Java实现
享元模式 享元(Flyweight)模式定义 Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意。享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。 Java中的String类型 在Java语言中,String类型就是使用了享元模式。String对象是final类型,对象一旦创建就不可改变。在Ja...原创 2019-06-06 15:34:15 · 305 阅读 · 0 评论 -
装饰模式(Decorator) Java实现
装饰模式 装饰(Decorator)模式定义: 装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 装饰模式的结构 装饰模式以对客户透明的方式动态地给一个对象附上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展。 装饰模式的类图 在装饰模式中的角色有: ...原创 2019-06-06 15:30:39 · 923 阅读 · 0 评论 -
合成模式(Composite) Java实现
合成模式 合成模式(Composite)的定义 合成模式属于对象的结构模式,有时又叫做“部分-整体”模式。合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素与复合元素同等看待。 理解合成模式 合成模式把部分和整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由它们复合而成的合成对象同等看待。 比如,一个文件系统就是一个典型的合成模式系统。...原创 2019-06-06 15:19:25 · 1497 阅读 · 0 评论 -
适配器模式(Adapter) Java实现
适配器模式 适配器(Adapter)模式定义 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 适配器模式的用途 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座只有两级,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法使用。这个时候一个三相到两相的转换器(适配...原创 2019-05-07 20:48:18 · 1534 阅读 · 0 评论 -
原型模式(Prototype) Java实现
原型模式 原型模式定义: 原型(Prototype)模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。这就是原型模式的用意。 原型模式的结构 原型模式要求对象实现一个可以“克隆”自身的接口,这样就可以通过复制一个实例对象本身来创建一个新的实例。这样一来,通过原型实例创建新的对象,就不再需要关心这个实例本身的类型,只要实现了克...原创 2019-05-07 20:47:40 · 389 阅读 · 0 评论 -
建造模式(Builder) Java实现
建造模式 建造模式定义 建造模式是对象的创建模式,建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。 产品的内部表象 一个产品常有不同的组成成分作为产品的零件,这些零件可能是对象,也有可能不是对象,它们通常又叫做产品的内部表象(internal representation)。不同的产...原创 2019-05-07 20:46:38 · 484 阅读 · 0 评论 -
单例模式(Singleton) Java实现
单例模式 单例模式定义 作为对象的创建模式,单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类为单例类。 单例模式的特点 单例类只能有一个实例 单例类必须自己创建自己的唯一实例。 单例类必须给所有其他对象提供这一实例。 饿汉式单例类 /** * 饿汉式单例 */ public class EagerSingleton { private static ...原创 2019-05-01 23:49:32 · 266 阅读 · 0 评论 -
抽象工厂模式(Abstract factory) Java实现
抽象工厂模式 场景 组装电脑的时候,通常需要选择一系列的配件,比如CPU、硬盘、主板、电源、机箱等。讨论的简单点,只考虑选择CPU和主板的问题。 选择CPU的时候,确定好品牌、型号、针脚数目、主频等问题,才能确定具体的CPU。 选择主板的时候,确定好品牌、芯片组、集成芯片、总线频率等问题,才能确定具体主板。 选择不同的CPU和主板,是每个客户在组装电脑的时候,向装机公司提出的要求,也就是我们每个人...原创 2019-05-01 23:48:34 · 839 阅读 · 0 评论 -
工厂方法模式(Factory method) Java实现
工厂方法模式 工厂方法模式描述 工厂方法模式是类的创建模式,又叫做虚拟构造器(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式。 工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。 工厂方法模式场景 系统需要支持对数据库中的员工薪资进行导出,并且支持多种格式如:HTML、CSV、PDF等。每种格式导出的结构有所不...原创 2019-05-01 23:46:18 · 341 阅读 · 0 评论
分享