设计模式
穷水叮咚
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
中介者模式
在我们的生活中处处充斥着“中介者”,比如你租房、买房、出国留学、找工作、旅游等等可能都需要那些中介者的帮助,同时我们也深受其害,高昂的中介费,虚假信息。在地球上最大的中介者就是联合国了,它主要用来维护国际和平与安全、解决国际间经济、社会、文化和人道主义性质的问题。国与国之间的关系异常复杂,会因为各种各样的利益关系来结成盟友或者敌人,熟话说没有永远的朋友,也没有永远的敌人,只有永远的利益!所以国与国...转载 2018-04-09 11:28:34 · 271 阅读 · 0 评论 -
Builder建造者模式
1. 介绍1.1 定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示1.2 主要作用在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。用户只需要给出指定复杂对象的类型和内容;建造者模式负责按顺序创建复杂对象(把内部的建造过程和细节隐藏起来)1.3 解决的问题方便用户创建复杂的对象(不需要知道实现过程)代码复用性 & 封装性(将对象构建过程和细节进行...转载 2018-04-05 14:25:09 · 173 阅读 · 0 评论 -
简单工厂模式和抽象工厂模式
举个生活中常见的例子——组装电脑,我们在组装电脑的时候,通常需要选择一系列的配件,比如CPU、硬盘、内存、主板、电源、机箱等。为讨论使用简单点,只考虑选择CPU和主板的问题。 事实上,在选择CPU的时候,面临一系列的问题,比如品牌、型号、针脚数目、主频等问题,只有把这些问题都确定下来,才能确定具体的CPU。 同样,在选择主板的时候,也有一系列问题,比如品牌、芯片组、集成芯片、总线频率等问题,也...转载 2018-04-04 13:29:53 · 292 阅读 · 0 评论 -
单例模式
单例模式的结构 单例模式的特点:单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。 饿汉式单例类public class EagerSingleton {private static EagerSingleton instance = new EagerSingleton();/** * 私有默认构造子*/private EagerSingl...转载 2018-04-04 11:17:00 · 149 阅读 · 0 评论 -
代理模式
Java的三种代理模式1.静态代理模式静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者是继承相同父类.创建接口并实现接口public interface Hello { void say(); }public class HelloImpl implements Hello{ @Override public void say() { System.o...原创 2018-03-29 14:24:26 · 155 阅读 · 0 评论 -
访问者模式
分派的概念 变量被声明时的类型叫做变量的静态类型(Static Type),有些人又把静态类型叫做明显类型(Apparent Type);而变量所引用的对象的真实类型又叫做变量的实际类型(Actual Type)。比如:List list = null; list = new ArrayList(); 声明了一个变量list,它的静态类型(也叫明显类型)是List,而它的实际类型是ArrayL...转载 2018-04-09 13:50:32 · 204 阅读 · 0 评论 -
模板方法模式
模板方法模式的结构 模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术。 模板方法模式需要开发抽象类和具体子类的设计师之间的协作。一个设计师负责给出一个算法的轮廓和骨架,另一些设计师则负责给出这个算法的各个逻辑步骤。代表这些具体逻辑步骤的方法称做基本方法(primitive method);而将这些基本方法汇总起来的方法叫做模板方法(template method)...转载 2018-04-09 13:46:48 · 135 阅读 · 0 评论 -
策略模式
策略模式的结构 策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是:“准备一组算法,并将每一个算法封装起来,使得它们可以互换”。下面就以一个示意性的实现讲解策略模式实例的结构。 这个模式涉及到三个角色: ● 环境(Context)角色:持有一个Strategy...转载 2018-04-09 13:39:45 · 131 阅读 · 0 评论 -
状态模式
状态模式的结构 用一句话来表述,状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。状态模式的示意性类图如下所示: 状态模式所涉及到的角色有: ● 环境(Context)角色,也成上下文:定义客户端所感兴趣的接口,并且保留一个具体状态类的实例。这个具体状态类的实例给出此环境对象...转载 2018-04-09 13:31:43 · 140 阅读 · 0 评论 -
观察者模式
观察者模式的结构 一个软件系统里面包含了各种对象,就像一片欣欣向荣的森林充满了各种生物一样。在一片森林中,各种生物彼此依赖和约束,形成一个个生物链。一种生物的状态变化会造成其他一些生物的相应行动,每一个生物都处于别的生物的互动之中。 同样,一个软件系统常常要求在某一个对象的状态发生变化的时候,某些其他的对象做出相应的改变。做到这一点的设计方案有很多,但是为了使系统能够易于复用,应该选择低耦合度...转载 2018-04-09 13:19:18 · 182 阅读 · 0 评论 -
备忘录模式
个人比较喜欢玩单机游戏,什么仙剑、古剑、鬼泣、使命召唤、三国无双等等一系列的游戏我都玩过(现在期待凡人修仙传),对于这些游戏除了剧情好、场面大、爽快之外,还可以随时存档,等到下次想玩了又可以从刚开始的位置玩起(貌似现在的游戏都有)。这里的所谓存档就是将当前的状态记录下来,打开存档的时候只需要将这些状态读取出来即可。还有我们小时候期待长大,长大了希望回到小时候。18岁想长到28岁,到了28想还是18...转载 2018-04-09 11:45:52 · 146 阅读 · 0 评论 -
原型模式
以前听过这样一句话:“程序员的最高境界就是Ctrl+C、Ctrl+V”,我们先不论这句话的对错,就论这个过程,这个过程我们都知道无非就是复制一个对象,然后将其不断地粘贴。这样的过程我们可以将其称之为“克隆”。再如我们应聘的时候打印了那么多的简历。 克隆我们都清楚,就是用一个物体复制若干个一模一样物体。同样,在面向对象系统中,我们同样可以利用克隆技术来克隆出若干个一模一样的对象。在应用程...转载 2018-04-07 20:47:15 · 336 阅读 · 0 评论 -
迭代模式
Java Iterator模式 Java Iterator模式, 模仿Collectin ArrayList LinckedList一、有如下几个类1.接口Collection.java2.接口Iterator.java3.ArrayList.java4.LinkedList.java5.Node.java关系如下:代码如下:1.接口Collection.java12345public inter...转载 2018-04-09 10:42:33 · 241 阅读 · 0 评论 -
命令模式
命令模式的结构 命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。 每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否被执行、何时被执行,以及是怎么被执行的。 命令允许请求的一方和接收...转载 2018-04-09 09:47:35 · 169 阅读 · 0 评论 -
责任链模式
对于这中将请求一级一级地往上传递直到处理请求为止的设计模式就是职责链模式。 上图将学生、辅导员、系主任、院长、校长组成了一个简单的链。在这个链上,学生是申请者,其余的都是请求处理者。职责链可以将请求的处理者组织成一条链,并且将请求沿着链传递,如果某个请求处理者能够处理请求则处理,否则将该请求交由上级处理。 职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关...转载 2018-04-08 17:29:13 · 143 阅读 · 0 评论 -
享元模式
面向对象可以非常方便的解决一些扩展性的问题,但是在这个过程中系统务必会产生一些类或者对象,如果系统中存在对象的个数过多时,将会导致系统的性能下降。对于这样的问题解决最简单直接的办法就是减少系统中对象的个数。 享元模式提供了一种解决方案,使用共享技术实现相同或者相似对象的重用。也就是说实现相同或者相似对象的代码共享。一、 模式定义 所谓享元模式就是运行共享技术有效地支持大量细粒度对...转载 2018-04-08 16:31:26 · 149 阅读 · 0 评论 -
装饰者模式
公司门口有一个小摊卖手抓饼和肉夹馍的,有时候中午不想吃饭就会去光顾一下那个小摊,点了手抓饼之后往往还可以在这个基础之上增加一些配料,例如煎蛋,火腿片等等,每个配料的价格都不一样,不管你怎么配配料,最终价格是手抓饼基础价加上每一种所选配料价格的总和。小摊的价格单如下:如何使用一种设计模式来处理价格计算的问题呢,或许我们可以试试装饰者模式,因为在这里,主体是手抓饼和肉夹馍,而配料则是装饰者,我先用UM...转载 2018-04-08 15:36:56 · 206 阅读 · 0 评论 -
外观模式
医院的例子 现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其“分而治之”,把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。 首先病人必须先挂号,然后门诊。如果医生要求化验,病人必须首先划...转载 2018-04-08 13:52:48 · 185 阅读 · 0 评论 -
组合模式
我们对于这个图片肯定会非常熟悉,这两幅图片我们都可以看做是一个文件结构,对于这样的结构我们称之为树形结构。在数据结构中我们了解到可以通过调用某个方法来遍历整个树,当我们找到某个叶子节点后,就可以对叶子节点进行相关的操作。我们可以将这颗树理解成一个大的容器,容器里面包含很多的成员对象,这些成员对象即可是容器对象也可以是叶子对象。但是由于容器对象和叶子对象在功能上面的区别,使得我们在使用的...转载 2018-04-08 13:35:35 · 1121 阅读 · 0 评论 -
桥接模式
在开始学java的时候老师讲到继承的时候,总是喜欢用一个例子来讲解,那就是画图,这里有一个画笔,可以画正方形、长方形、圆形(这个大家都知道怎么做吧,我就不解释了)。但是现在我们需要给这些形状进行上色,这里有三种颜色:白色、灰色、黑色。这里我们可以画出3*3=9中图形:白色正方形、白色长方形、白色圆形。。。。。。到这里了我们几乎到知道了这里存在两种解决方案: 方案一:为每种形状都提供各种颜...转载 2018-04-08 11:29:48 · 532 阅读 · 0 评论 -
适配器模式
1. 介绍1.1 模式说明定义一个包装类,用于包装不兼容接口的对象包装类 = 适配器Adapter;被包装对象 = 适配者Adaptee = 被适配的类1.2 主要作用把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够在一起工作。适配器模式的形式分为:类的适配器模式 & 对象的适配器模式1.3 解决的问题原本由于接口不兼容而不能一起工作的那些类可以...转载 2018-04-08 10:18:04 · 165 阅读 · 0 评论
分享