设计模式
文章平均质量分 83
傻小子130
无
展开
-
设计模式之原型模式-original
定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。类型:创建类模式类图:原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件:实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clone方法。在ja转载 2014-10-05 21:42:15 · 564 阅读 · 0 评论 -
设计模式之组合模式-Composite
先看看组合模式的定义吧:“将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。” 就拿剪发办卡的事情来分析一下吧。 首先,一张卡可以在总部,分店,加盟店使用,那么总部可以刷卡,分店也可以刷卡,加盟店也可以刷卡,这个属性结构的店面层级关系就明确啦。 那么,总店刷卡消费与分店刷卡消费是一样的道理,那么总店与分店对会员卡的使用转载 2014-10-07 20:52:02 · 595 阅读 · 0 评论 -
设计模式之组合模式
先看看组合模式的定义吧:“将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。” 就拿剪发办卡的事情来分析一下吧。 首先,一张卡可以在总部,分店,加盟店使用,那么总部可以刷卡,分店也可以刷卡,加盟店也可以刷卡,这个属性结构的店面层级关系就明确啦。 那么,总店刷卡消费与分店刷卡消费是一样的道理,那么总店与分店对会员卡的使用原创 2014-10-05 22:05:50 · 492 阅读 · 0 评论 -
设计模式之组合模式-Composite
组合模式:将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性原创 2014-10-08 11:55:10 · 482 阅读 · 0 评论 -
设计模式之命令模式-command
命令模式:将“请求”封装成对象,以便使用不同的请求,队列,或者原创 2014-10-08 17:13:32 · 581 阅读 · 0 评论 -
设计模式之建造者-Buider
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。类型:创建类模式类图:四个要素产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。抽象建造者:引入抽象建造者的目的,是转载 2014-10-09 21:25:00 · 627 阅读 · 0 评论 -
设计模式(Design Patterns)
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化转载 2014-10-02 22:44:21 · 465 阅读 · 0 评论 -
设计模式之责任链模式
责任链模式(Chain of Responsibility)的目标是使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。在处理用户的请求时可能要根据不同的情况对请求添加不同的处理逻辑,在这时候就可以利用责任链进行设计。当需要添加一个处理逻辑时可以很方便的添加一个处理的节点。现在我们的需求是处理用户的请转载 2014-10-02 22:46:11 · 422 阅读 · 0 评论 -
设计模式之Iterator-迭代器模式
Iterator模式也叫迭代模式,是由GoF提出的23种设计模式的一种。Iterator模式是行为模式之一,它把对容器中包含的内部对象的访问委让给外部类,使用Iterator(遍历)按顺序进行遍历访问的设计模式。本文介绍设计模式中的迭代(Iterator)模式的概念,用法,以及实际应用中怎么样使用迭代模式进行开发。Iterator模式的概念Iterator模式指对容器中包含的内部对转载 2014-10-03 16:51:53 · 510 阅读 · 0 评论 -
设计模式之动态代理-proxy
动态代理作为代理模式的一种扩展形式,广泛应用于框架(尤其是基于AOP的框架)的设计与开发,本文将通过实例来讲解Java动态代理的实现过程。 友情提示:本文略有难度,读者需具备代理模式相关基础知识,。 通常情况下,代理模式中的每一个代理类在编译之后都会生成一个class文件,代理类所实现的接口和所代理的方法都被固定,这种代理被称之为静态代理(Static转载 2014-10-03 20:45:34 · 483 阅读 · 0 评论 -
设计模式之单例模式-Singleton
Singleton单类模式是最简单的设计模式,它的主要作用是保证在程序运行生命周期中,使用了单类模式的类只能有一个实例对象存在。单类模式实现了类似C语言中全局变量的功能,单类模式常用于注册/查找的服务。单类模式的UML图如下:单类模式有两种实现方式:饱汉模式和饿汉模式,如下:1.饱汉单类模式例子代码:[java] view plaincopypublic转载 2014-10-04 10:12:13 · 478 阅读 · 0 评论 -
设计模式之模板模式-TemplateMethod
定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。类型:行为类模式类图: 事实上,模版方法是编程中一个经常用到的模式。先来看一个例子,某日,程序员A拿到一个任务:给定一个整数数组,把数组中的数由小到大排序,然后把排序之后的结果打印出来。经过分析之后,这个任务大体上可分为两部分,排序和打印,打印功能好转载 2014-10-07 11:47:08 · 544 阅读 · 0 评论 -
设计模式之适配器-Adapter
1. 适配器模式简介 适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适用场景: 1、已经存在的类的接口不符合我们的需求; 2、创建一个可以复用的类,使得该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作;转载 2014-10-07 10:40:36 · 485 阅读 · 0 评论 -
Java之建造者模式-Builder Pattern
1.概念 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 [构建与表示分离,同构建不同表示] 与抽象工厂的区别:在建造者模式里,有个指导者,由指导者来管理建造者,用户是与指导者联系的,指导者联系建造者最后得到产品。即建造模式可以强制实行一种分步骤进行的建造过程。 建造模式是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具转载 2014-10-05 21:44:56 · 559 阅读 · 0 评论 -
设计模式之命令模式-command
定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。类型:行为类模式类图:命令模式的结构 顾名思义,命令模式就是对命令的封装,首先来看一下命令模式类图中的基本结构:Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute方法用来执行命令。C转载 2014-10-05 21:35:48 · 433 阅读 · 0 评论 -
设计模式之享元模式
释一下概念:也就是说在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象。比如说一个文本系统,每个字母定一个对象,那么大小写字母一共就是52个,那么就要定义52个对象。如果有一个1M的文本,那么字母是何其的多,如果每个字母都定义一个对象那么内存早就爆了。那么如果要是每个字母都共享一个对象,那么就大大节约了资源。 在Flyweight模式中,由于要产生各种各样的转载 2014-10-05 22:20:11 · 422 阅读 · 0 评论 -
设计模式之桥接模式-bridge
桥模式:将某个问题抽象的不同形式分别与该问题的具体实现部分相分离,使他们都可以独立变化,并能够动态结合。 例如电视厂商海尔,长虹生产21寸,29寸电视机。从这里要将它们分离出来,就用到桥模式。电视机与电视机生产厂商挂桥,从而,分离出不同厂商的实现,与不同电视机型号的实现. 下面看下uml 从上图可以看出,将实际抽象分离出来。看下代码创建电视机转载 2014-10-05 18:03:34 · 471 阅读 · 0 评论 -
设计模式之外观模式-facade
外观模式是一种使用频率非常高的结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。 1. 外观模式概述 不知道大家有没有比较过自己泡茶和去茶馆喝茶的区别,如果是自己泡茶需要自行准备茶叶、茶具和开水,如图1(A)所示,而去茶馆喝茶,最简单的方式就是跟茶馆服务员说想要一杯什么转载 2014-10-05 21:52:44 · 432 阅读 · 0 评论 -
设计模式之观察者模式-Observer
观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。原创 2014-10-06 17:21:35 · 486 阅读 · 0 评论 -
设计模式之策略模式-strategy
1,什么是策略模式?策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 2,策略模式有什么好处? 策略模式的好处在于你可以动态的改变对象的行为。 3,设计原则 设计原则是把一个类中经常改变或者将来可能改变的部分提取出来,作为一个接口(c++z中可以用虚类),然后在类中包含这个对象的实原创 2014-10-06 16:14:06 · 522 阅读 · 0 评论 -
设计模式之装饰者-Decorator
通过继承实现子类的行为是在编译时静态决定的,而且所有子类都会继承到相同的行为;而组合可以在运行时动态的进行扩展,所以应该尽量利用组合的方法扩展对象的行为。运行时的扩展远比编译时期的继承威力大 1 装饰者和被装饰者必须是一样的类型,即具有共同的超类。 2 当我们将装饰者与组件组合时,就是在加入新的行为。 3 java I/O中使用了大量的装饰类 4 装原创 2014-10-06 18:20:52 · 507 阅读 · 0 评论 -
设计模式之工厂模式-factory
一、工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 工厂模式在《Java与模式》中分为三类:1)简单工厂模式(Simple Factory):不利于产生系列产品;2)工厂方法模式(Factory Method):又称为多形性工厂;3)抽象工厂模式(Abstract Factory):又称为工具箱,产生产品族,但不利转载 2014-10-05 15:18:15 · 444 阅读 · 0 评论 -
设计模式之命令模式-command
意图:将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或记录日志,以及支持可撤销的操作动机:将”发出请求的对象”和”接收与执行这些请求的对象”分隔开来。效果:1)、command模式将调用操作的对象和实现该操作的对象解耦2)、可以将多个命令装配成一个复合命令,复合命令是Composite模式的一个实例3)、增加新的command很容易,无需改变已有的类转载 2014-10-07 09:51:24 · 477 阅读 · 0 评论 -
设计模式之状态模式-State
State状态设计模式类似于Switch多路分支功能的开关,State状态模式机制如下:状态模式UML图如下:State状态设计模式用于改变对象的行为,在代理的生命周期里,随着状态变化从一个目标实现程序切换到另一个目标实现程序。我们经常遇到如下的程序代码:[java] view plaincopypublic class Creature{转载 2014-10-04 10:17:27 · 480 阅读 · 0 评论