自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小憩一下

让我们安安静静的一起敲代码吧......

  • 博客(23)
  • 收藏
  • 关注

原创 访问者模式(行为型)

一:背景 在大话设计模式一书中提到一种场景,男人和女人在面对不同的事情时会有不同的反应,例如成功、失败、结婚、恋爱等等,在这种结构相对稳定(只有男人和女人),而遇到的情况多变的情形下,我们就可以用访问者模式来实现,还是先看下面的介绍吧。 二:概述 1、定义 表示一个作用于某对象结构中的各元素的操作。它可以使你在不改变各元素的类的前提下定义作用于这些元素的新操作。 2、类图结构 v...

2018-06-02 17:29:30 129

原创 解释器模式(行为型)

一:背景 如果一种特定类型的问题发生的频率比较高,那么可能就值得将该问题的各个实例表诉为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。比如说字符串中匹配文本的正则表达式、浏览器解释HTML的文法等等。 二:概述 1、定义 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 2、类图结构 三...

2018-06-02 12:18:55 199

原创 享元模式(结构型)

一:背景 在系统中,当需要大量重复的细粒度对象时,我们往往可以只维护一个实例;这样不仅避免了创建大量重复对象对资源的浪费,也易于我们的维护和拓展。 二:概述 1、定义 运用共享技术有效地支持大量细粒度的对象。 2、类图结构 三:实例分析 拿网站建设例子来说,有时候,我们创建的一系列网站(流量小)都是结构十分相似、功能又相近的,这种情况下,往往就可以使用同一个网站的实例; ...

2018-05-27 16:49:53 421

原创 中介者模式(行为型)

一:背景 当在一个系统中,存在大量的对象的时候,对象之间的相互调用连接会大大增加系统的复杂性,对系统行为的改动也会变得十分困难;根据‘迪米特法则’,如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用。这里,我们就可以引入一个中介者,将系统的网状结构变成以中介者为中心的星形结构。 二:概述 1、定义 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用...

2018-05-27 12:27:33 386

原创 责任链模式(行为型)

一:背景 拿平时在公司的请假申请来说,你的申请会一级一级的向上传递给各层的领导,当然,每个领导的审批权限也不同,有的1天,有的5天,还有一个月的,那这种场景下如何用代码来完成表示呢?一般我们会想到使用if/else来分别判断各个领导和申请的假期天数,但这样耦合太高了,拓展性也差,想变更审批的流程也得改代码;这种情况下,责任链模式就很好的解决了我们的问题。 二:概述 1,定义 使多个对象...

2018-05-22 23:51:57 118

原创 桥接模式(结构型)

一:背景 这里拿大话设计模式一书中的例子来说,有两种实体,手机和手机软件;我们在每种手机品牌上都有各种的软件app来运行,如何表示呢?一般有两种维度划分,通过手机品牌分类,每种品牌下分软件类;另一中以手机软件app类型划分,类型下分手机品牌;可以发现,这两种拓展性都不好,耦合太高,所以,这里通过聚合的优于继承的原则,就有了桥接模式。 二:概述 1,定义 将抽象与它的实现部分分离,使它们都可...

2018-05-22 00:52:54 155

原创 备忘录模式(行为型)

一、背景 在日常生活工作中,我们常常需要一些反悔的操作,例如:下棋时悔棋,编写文档时的撤销,查看网页时的后退;这些频繁的操作不需要存在磁盘中,只要将内存中的状态恢复一下即可。这里我们可以使用备忘录模式实现这一点。 二、概述 1:定义 备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将对象恢复到原先保存的状态。 2:类图结构 Orig...

2018-04-19 12:08:59 162

原创 建造者模式(创建型)

一:相关定义 建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 二:相关类图和示例 建造者模式类图: 下面通过示例来说明这个模式 建造者模式示例: 使用关键的代码来进行说明如下: Product类——产品类,由多个部门组成。 class Person{ private String head; private St...

2018-04-18 19:48:27 90

原创 UML常用关系解析

在画uml类图时,我们需要用一些箭头来表示类之间特定的关系,在java中,常用的关系有:继承、实现、依赖、关联、聚合、合成(组合)。下面我们通过示例来了解一下这几种常用的关系。 先来一个示例图: 下面具体看每种关系代表什么 继承: 在java中使用关键字extends来关联和说明; 实现: 实现指实现接口,在java中使用implements,后面加接口名称; 依赖: ...

2018-04-18 18:26:17 177

原创 原型模式(创建型)

一:相关定义 原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型进行创建新的对象。 二:相关类图和示例 原型模式类图: 原型模式其实就是通过一个对象拷贝出另一个对象,这里分为深拷贝和浅拷贝。在java的Object中,clone默认实现为浅拷贝(:对于基本类型拷贝值,对于其他对象只拷贝引用地址)。当然,你也可以重写父类Object的clone方法,实现自定义的拷贝。 注...

2018-04-18 12:50:12 94

原创 代理模式(结构型)

一:相关定义 代理模式:为另一个对象提供一个替身或占位符以控制对这个对象的访问。 二:相关类图和示例 代理模式类图: 看类图和装饰者模式很像,但两者的目的不同,代理强调的是控制对象的访问。代理有很多的应用场景和分类,这里我们主要来看一下java中的动态代理如何工作,因为它比较常用嘛,下面看类图。 因为java已经为你创建了Proxy类,所以你需要有办法来告诉Proxy类你要做...

2018-04-07 21:37:17 442

原创 状态模式(行为型)

一:相关定义 状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 二:相关类图和示例 状态模式类图: 状态模式和策略模式类图基本一致,而差别就在于它们的“意图”。我们将一群行为封装在状态对象中,context的行为随时可委托到那些状态对象中的一个。随时间流逝,当前状态在状态对象集合中游走改变,以反映出context内部的状态。 状态模式示例图: 这...

2018-03-28 00:39:20 158

原创 组合模式(结构型)

一:相关定义 组合模式:允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。 二:相关类图的示例 组合模式类图: 使用组合结构,我们能把相同的操作应用在组合和个别对象上。换句话说,大多数情况下,我们可以忽略对象组合和个别对象之间的差距。 组合模式示例: 这是一个菜单的组合模式示例,在一个菜单中,可能包含有一个子菜单,也可...

2018-03-25 16:00:07 208

原创 迭代器模式(行为型)

一:相关定义 迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示。 二:相关类图和示例 迭代器模式类图: 迭代器模式体现了单一责任,即一个类应该只有一个引起变化的原因,下面我们通过示例来看迭代器模式的实现。 迭代器模式示例图: 这里,两个菜单分别使用不同的方式实现菜单项的遍历;为了使服务生(client)可以对不同类型的菜单使用相同的遍历方式...

2018-03-18 22:10:07 101

原创 模板方法模式(行为型)

一:相关定义 模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 二:相关类图和示例: 类图: 下面看代码的示例: abstract class AbstractClass{ final void templateMethod(){ primitiveOper...

2018-03-15 22:30:33 161

原创 外观模式(结构型)

一:相关定义 外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容器使用。(体现了最少知道原则) 二:相关类图和示例 外观模式类图: 外观的意图是提供一个简单的接口,好让一个子系统更易于使用; 外观模式示例: 在此示例中,HomeTheaterFacade(家庭影院外观)提供了一系列简单的接口用于间接地操作子系统中的多个类,使得客...

2018-03-12 22:54:41 189

原创 策略模式(行为型)

一:相关定义 策略模式(定义主要体现了该算法的思想和应用场景): 它定义了算法家族,分别封装起来,让它们之间可以互相替代,此模式让算法的变化,不会影响到使用算法 的客户。 二:具体类图和示例 策略模式类图: context即相当于使用算法的客户,它持有相关算法的接口(strategy),只与这个算法接口进行耦合,而不关心算法的实现; 这样当算法进行变更时,只需要给context...

2018-03-12 22:22:27 214

原创 适配器模式(结构型)

一:相关定义适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。二:相关类图和示例适配器模式类图:良好的体现了OO设计原则:组合;看下面示例来进行理解;适配器模式示例:鸭子适配器实现了鸭子接口(被客户端调用的接口),通过组合的方式,使用被适配对象(火鸡)的的引用,将Client对鸭子接口的操作传递给了火鸡(被适配接口),下面是核心代码:鸭子接口(被调用接...

2018-03-12 22:10:58 239

原创 命令模式(行为型)

一:相关定义命令模式:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。二:相关类图和示例:命令模式类图:不结合示例来看的话,完全懵逼,主要看下面示例吧还是:命令模式示例图:看上面的示例图,虽然有一些注释,但我们在不了解前因后果的情况下,还是不懂它想表达什么,那就让我慢慢道来。先说需求:有一个遥控器,它想要控制家里一堆电器的开关(例如:电灯,电视,...

2018-03-08 23:03:58 192

原创 单件模式(创建型)

一:相关定义单件模式:确保一个类只有一个实例,并提供一个全局访问点。二:相关类图类图:挺简单的一个模式,就不多说了,但在多线程情况下要注意使用同步:public class Singleton{     private volatile static Singleton uniqueInstance;     //其他有用的实例化的变量     //构造器私有     private Signle...

2018-03-06 21:18:02 152

原创 工厂模式(创建型)

一:相关定义这里的工厂模式分为三种:简单工厂模式、工厂模式和抽象工厂模式;简单工厂模式:其实不算是一种模式,而是一种编程习惯,这里就不定义了,因为我也没找到工厂模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。二:相关类图和示例简单工厂(直接上示例图):下面是关键代码:...

2018-03-01 23:00:11 268

原创 装饰者模式(结构型)

一:相关定义装饰者模式:动态的将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。二:具体的类图和示例装饰者模式类图:component是我们要装饰的组件,decorator是我们的装饰器,在这里继承要装饰的组件(使用装饰的目的就是拓展功能而不改变原有的代码;这样,我们新增一个装饰者,客户端依然可以调用原有的组件接口来使用我们的扩展了功能的对象)。ConcreteDecorat...

2018-02-28 23:14:05 304 1

原创 观察者模式(行为型)

一:相关定义观察者模式:定义了对象之间的一对多关系,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。二:具体类图和示例观察者模式类图:subject即为被观察者(主题),持有一个集合保存有观察者对象的引用。这样,当主题发生改变时,才能对观察者发出通知;observer为观察者对象,实现相应的更新方法(在主题中被调用更新),用于被通知时的更新;观察者模式示例图(摘自Headfi...

2018-02-26 22:42:25 141

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除