设计模式
颜洛滨
Java新人
展开
-
设计模式之单例模式
设计模式之单例模式单例,顾名思义,就是指在系统的运行过程中某一个类只有唯一一个对象存在。单例模式,就是实现这样一种方式的一个设计模式。常见的单例场景 windows系统的任务管理器、回收站 Servlet中的ServletContext spring中的默认bean对象 优势 由于系统中只存在一个该类型的对象,减少系统的开销,特别是当创建该对象所消耗的资源比较多,但是内容却是一样的时候,单例的优势就原创 2017-03-28 15:26:15 · 262 阅读 · 0 评论 -
设计模式之备忘录模式
设计模式之备忘录模式备忘录模式的简介在日常生活中,总会出现这样的情况,有时候做错了一件事,然后特别希望能够回到发生这件事情之前。当然,这在日常生活中是不可能,不过,在软件开发过程却是可以实现的,比如说我们经常使用的CTRL + Z,或者一些其他软件的回退功能等等,这其中就涉及到了备忘录模式(Memonto)。所谓的备忘录模式,其实就是把当前对象的一个状态进行保存,然后在必要的时候可以将其恢复,使得对原创 2017-06-23 22:35:11 · 222 阅读 · 0 评论 -
设计模式之观察者模式
设计模式之观察者模式观察者模式简介观察者模式,二十三种设计模式之一,也是一种使用频率比较高的设计模式。在日常生活中,我们经常会碰到这样的情景,比如说某个事情发生了,我们希望通知到所有对这个事情关系的人,这个时候有两种方式,一种是关心这件事的人主动去询问发布这件事情的人;另外一种就是告诉这件事情的负责人,让他在这件事情发生的时候,告诉我们这件事情已经发生了。显然,第一种方式是属于主动模式,这种方式在这原创 2017-06-22 23:43:29 · 198 阅读 · 0 评论 -
设计模式之装饰模式
设计模式之装饰模式装饰模式的简单介绍通常来说,我们要扩展一个类的功能,可以有两种方式,一种是继承该类,并且增加新的功能;另外一种就是采用装饰模式,在设计的时候,让该类本身具有动态扩展性,在以后需要扩展新功能的时候,可以动态地进行扩展,经常使用到的I/O流就是装饰模式的典型应用了。装饰模式的具体实现这里通过一个汽车的案例来深入学习装饰模式,假设有一种汽车,只能够在陆地上跑,但是可以为其添加新的功能,使原创 2017-07-01 19:23:15 · 243 阅读 · 0 评论 -
设计模式之外观模式
设计模式之外观模式外观模式的简单介绍外观模式,可以简单地理解为系统的门面,也就是说,通过外观模式,将系统内部的交互、操作屏蔽起来,而对外提供比较简单的门面对象,通过这种方式,可以隐藏系统的复杂性,使得外部对象更加方面地与系统进行交互。外观模式的具体实现这里通过一个简单的到酒店订房间的案例,来更加深入的理解外观模式。假如酒店前台的接应,那么我们去酒店订房间的时候,可能需要以下操作:查看空闲房间,从空闲原创 2017-07-01 18:07:33 · 229 阅读 · 0 评论 -
设计模式之策略模式
设计模式之策略模式策略模式的简单介绍策略模式(Strategy),二十三中设计模式之一,是一种比较常用的设计模式,策略模式,顾名思义,一种跟策略有关的设计模式,主要的思想是,当面对同一件事情有多种不同的解决方案的时候,根据不同的选择方案采用不同的策略,每一种策略都是一个独立的个体,这样子,当增加新的方案的时候,可以不用更改原有的代码,而直接编写新的策略,然后使用该策略即可,符合设计原则中的“开闭原则原创 2017-06-21 19:58:51 · 197 阅读 · 0 评论 -
设计模式之组合模式
设计模式之组合模式组合模式的简单介绍组合模式(composite),是一种比较常用的设计模式,这里需要区分组合模型与组合模式的区别,组合模型是指对象之间的依赖关系(还有继承等),组合模式使用于层级结构的模型之中(比如树,具体的可以有文件系统的管理,管理文件、目录等),基本思想是:将部分和整体用树形结构表示出来,客户端在处理的时候可以使用统一的方式进行处理而不需要详细区分不同部分的区别。在使用的过程中原创 2017-06-30 18:19:40 · 258 阅读 · 0 评论 -
设计模式之模板方法模式
设计模式之模板方法模式模板方法模式简介模板方法模式(Template Method Pattern),二十三中设计模式之一,也是一种比较常用的设计模式。模板方法模式,顾名思义,主要就是提供一个模板的,无论是在现实生活中还是在开发过程中,总会遇到这样的情况,完成某一项工作的时候,其大体的步骤是固定不变的,但是其中具体各个步骤的操作是根据实际情况来确定,这个时候,为了防止步骤出现错误,就可以使用模板方法原创 2017-06-21 16:34:25 · 266 阅读 · 0 评论 -
设计模式之中介者模式
设计模式之中介者模式中介者模式的简单介绍说到中介,我们是比较熟悉的,比如去留学,有专门的中介负责,买房子,有专门的中介负责。有中介的好处在于,我们不需要直接跟目标对象接触,也就是说,我们之间的交流可以通过中介来完成即可,这样子的好处在于,我们之间的联系不需要很紧密,特别是当涉及到的对象比较多的时候,如果对象与对象之间直接进行交互,整个关系就会变得比较复杂了。中介者模式(Mediator)就是基于这样原创 2017-06-30 15:31:53 · 197 阅读 · 0 评论 -
设计模式之迭代器模式
设计模式之迭代器模式迭代器模式的简单介绍谈到迭代器,相信很多人都比较熟悉,尤其是Java语言的使用者,经常使用迭代器来遍历容器,如list、set、map等,这些其实就是迭代器模式的直接应用。所谓的迭代器模式,可以简单地理解为,遍历容器的一种方式,只是这种方式比较特殊,它适用于所有的容器,也就是说,迭代器模式屏蔽了底层访问的细节,而提供统一的访问接口,更加便于适用。迭代器模式的简单实现这里,我们通过原创 2017-06-28 23:42:03 · 192 阅读 · 0 评论 -
设计模式之责任链模式
设计模式之责任链模式责任链模式简介责任链,顾名思义,由不同的责任承担者构成的链,简单地说,责任链模式就是由不同的责任者构成的链所构成的设计模式,这种模式的特点在于,当一个服务当前对象无法处理的时候,就可以按照指定的下一个处理者来进行处理,直到没有人能够处理为止,这种模式的好处在于,可以动态地将所需要的处理者连接起来,而不是将其硬编码在代码中,这样,当需要调整不同的处理者,比如说增加一个处理者或者减少原创 2017-06-28 19:59:44 · 263 阅读 · 0 评论 -
设计模式之适配器模式
设计模式之适配器模式前言前面的几个小节中,我们学习了设计模式中的构建形的设计模式,包括了单例模式、工厂模式、建造者模式以及原型模式,接下来的几个小节中,我们将学习设计模式的另外一个部分,结构类型的设计模式,本小节主要学习适配器模式适配器模式的简单介绍说到适配器(注意,不是适配器模式),相信大家应该不陌生吧,生活中我们经常需要用到适配器,比如说目前比较热门的安卓充电线的接头,之前主要一直都是micro原创 2017-05-09 20:28:12 · 323 阅读 · 0 评论 -
设计模式之建造者模式
设计模式之建造者模式作用建造者模式是设计模式的一种,主要用于构造对象,特别是复杂对象,通常用于与工厂模式配合,使用工厂模式构造简单的部件,然后通过建造者模式将其组装起来,其主要目的是屏蔽构造的过程,使得使用者可以不用知道其实现细节而方便地获取对应的对象。具体实现建造者模式主要用于复杂对象的构建,所以就需要一个对应的产品,这里使用台式电脑(显示器、鼠标、键盘、机箱)作为例子,同时还需要一个构造者,用于原创 2017-04-26 22:52:44 · 245 阅读 · 0 评论 -
设计模式之工厂模式
设计模式之工厂模式简介工厂模式,设计模式的一种,主要用于生产对象(工厂嘛,就是用来生产物品的,只是这里的物品就是我们的对象。应用场景在没有接触工厂模式之前,我们一般在需要用到对象的时候就使用new操作符直接创建一个对象,这种方式虽然方便,但是却存在一定的弊端:对象的创建跟对象的使用紧密结合在一起,这样带来的一个问题就是对象的使用者需要直接参与对象的创建,对象的创建过程越复杂,对象的使用者需要参与的程原创 2017-04-26 20:32:54 · 270 阅读 · 0 评论 -
设计模式之代理模式
设计模式之代理模式前言代理模式,顾名思义,一种跟代理有关的设计模式,是设计模式中结构性模式之一。关于代理,在日常生活中见得非常多,比如说当我们出现一些法律纠纷,需要聘请律师的时候,律师就代替我们去处理一些事情,这个时候,律师就相当于我们的代理;再比如说,有时候因为网络限制的原因,我们需要使用代理服务器进行上网,这个时候,代理服务器就是我们的代理了。代理模式实际上就是这样的一种方式,有时候为了代码的简原创 2017-05-11 15:10:07 · 244 阅读 · 0 评论 -
设计模式之原型模式
设计模式之原型模式前言原型模式(Prototype),又称为克隆模式,属于创建型设计模式,也就是说,原型模式也是用于创建对象用的,跟单例模式、工厂模式、建造者模式这些的主要用途是一致的,不过侧重点不同,原型模式的侧重点是:当对象的创建比较耗时的时候,多次使用new来创建对象所带来的消耗就会比较大,这个时候使用原型模式就是一种比较好的方法了。使用原型模式创建出来的对象是原来对象的拷贝,也就是说,创建之原创 2017-04-30 19:23:49 · 288 阅读 · 0 评论 -
设计模式之状态模式
设计模式之状态模式状态模式简介有时候,会遇到这样的情形,某一个对象,有多种不同的状态,在不同的状态下,可能有不同的行为。要实现这样一种服务,可以使用最简单的if.else结构,但是呢,这种方式在状态比较多的时候就会使得代码变得比较冗长,每次有新的状态的时候,都需要修改该处代码,而且,在后期进行维护的时候,也不便于理解;还有另一一种方式,就是状态模式,所谓的状态模式,通俗地来讲,就是把对象的所有状态进原创 2017-06-26 14:09:39 · 193 阅读 · 0 评论