设计模式
jazwoo
这个作者很懒,什么都没留下…
展开
-
Java设计模式
掌握设计模式,有利于开发中,对系统的复用进行有利的选择。可以说,程序员只有真正掌 握了模式的设计,理解其中的精髓,才能把自己的编码发挥到最高的水平。由于时间关系,一直未能读完设计模式,每次都是断断续续....今日难得有时间学习 一下,打算花点时间和精力把java设计模式中的相关用法总结一下,其中总结的资料大多数来自网上一些相资料的集合,再加上个人的一些心得与体会。闲话不 必多说,言归正传。转载 2012-09-13 16:13:15 · 454 阅读 · 0 评论 -
java设计模式之组合模式Composite
Composite定义: 将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性. Composite比较容易理解,想到Composite就应该想到树形结构图。组合体内这些对象都有共同接口,当组合体一个对象的方法被调用执行时,Composite将遍历(Iterator)整个树形结构,寻找同样包含这个方法的对象并实现调用执行。可以用牵转载 2012-09-15 10:30:03 · 1078 阅读 · 2 评论 -
java设计模式之装饰模式Decorator
装饰模式(Decorator): 装饰模式的角色有:—— 抽象构件角色(Component):给出一个抽象接口,以规范准备接收附加责任的对象。—— 具体构件角色(Concrete Component):定义一个将要接收附加责任的类。—— 装饰角色(Decorator):持有一个构件(Component)对象的引用,并定义一个与抽象构件接口一致的接口。—— 具转载 2012-09-15 10:32:42 · 527 阅读 · 0 评论 -
java设计模式之状态 模式State
在下面两种情况下均可以使用State模式:1 一个对象的行为取决于它的状态,并且他必须在运行时刻根据状态改变它的行为。2 一个操作中含有庞大的多分枝的条件语句,并且这些分支依赖于该对象的状态。这个状态通常用一个或多个枚举常量表示。通常,有多个操作包含这一相同的条件结构。State模式将每一个条件分支放入一个独立的类中。这是得你可以根据对象自身的情况将对象的状态作为一个对象,这一对象可以不依转载 2012-09-15 10:57:24 · 613 阅读 · 0 评论 -
java设计模式之外观模式Facade
1、 意图为子系统中的一组接口提供一个一致的界面,Façade模式定义了一个高层接口,这一接口使得这一子系统更加容易使用。2、 适用性在遇到以下情况时使用:当你要为一个复杂子系统提供一个简单接口时。客户程序与抽象类的实现部分之间存在着很大的依赖性。当你需要构建一个层次结构的子系统时,使用façade模式定义子系统中每层的入口。3、 结构转载 2012-09-15 10:33:57 · 567 阅读 · 0 评论 -
java设计模式之享元模式Flyweight
享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。享元对象能做到共享的关键是区分内蕴状态(Internal State)和外蕴状态(External State).一个内蕴状态是存储在享元对象内部的,并且是不会随环境改变而有所不同的。因此,一个享元可以具有内蕴状态并可以共享。一个外蕴状态是可随环境改变而改变的,不可以共享的状态。享元对象的外蕴状态必须转载 2012-09-15 10:39:21 · 1063 阅读 · 0 评论 -
java设计模式之职责链模式 Chain of Responsibility
职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的藕合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 1.当客户提交一个请求时,请求是沿链传递直至有一个ConcreteHandler对象负责处理它。 2.接收者和发送者都没有对方的明确信息,且链中的对象自己也并不知道链的结构。结果是职责链可简 化对象的相转载 2012-09-15 10:47:21 · 569 阅读 · 0 评论 -
java设计模式之命令模式Command
1、 意图将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排列或记录请求日志,以及支持可撤销的操作。2、 别名动作(Action)、事务(Transaction)3、 适用性抽象出呆执行的动作以参数化某对象。可以用语言中的回调(callback)函数表达这种参数化机制。Command模式是回调机制的一个面向对象的替代品。在不同的时刻指转载 2012-09-15 10:48:22 · 591 阅读 · 0 评论 -
java设计模式之迭代器 Iterator
1、 意图提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示。2、别名游标3、关键思想迭代器模式的关键思想就是将列表的访问和遍历从列表对象中分离出来并放入一个迭代器(iterator)对象中。迭代器类定义了一个访问该列表的接口。迭代器对象负责跟踪当前的元素:即,它知道哪些元素已经遍历过了。4、 适用性迭代器模式可用来:转载 2012-09-15 10:49:17 · 732 阅读 · 0 评论 -
java 设计模式之适配器Adapter
1、 意图将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。2、 别名包装器Wrapper3、 适用性你想使用一个已经存在的类,而它的接口不符合你的需求。你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协调工作。(仅适用于对象Adapter)你转载 2012-09-15 10:22:25 · 564 阅读 · 0 评论 -
java设计模式之观察者模式Observer
1、 意图定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。2、 别名依赖(Dependents),发布-订阅(Publish-Subscribe)3、 适用性当一个抽象模型有两个方面,其中一个方面依赖于另一个方面。将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。当对一个对象的改变需要同时改变转载 2012-09-15 10:53:51 · 609 阅读 · 0 评论 -
java设计模式之中介者模式Mediator
1、 意图用一个中介者对象来封装一系列的对象交互。中介者使其各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立改变它们之间的交互。2、 适用性一组对象以定义好但是复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解。一个对象引用其他很对对象并且直接与这些对象通信,导致难以复用该对象。想制定一个分布在多个类中的行为,而又不想生成太多的子类。3、 结构转载 2012-09-15 10:50:38 · 523 阅读 · 0 评论 -
java 设计模式之桥接模式Bridge
生活中的一个例子: 就拿汽车在路上行驶的来说。即有小汽车又有公共汽车,它们都不但能在市区中的公路上行驶,也能在高速公路上行驶。这你会发现,对于交通工具(汽车)有不同的类型,然而它们所行驶的环境(路)也在变化,在软件系统中就要适应两个方面的变化?怎样实现才能应对这种变化呢?概述:在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何转载 2012-09-15 10:24:28 · 1106 阅读 · 0 评论 -
java设计模式之备忘录模式Memento
一、什么是备忘录模式 Memento模式也叫备忘录模式,是行为模式之一,它的作用是保存对象的内部状态,并在需要的时候(undo/rollback)恢复对象以前的状态。二、备忘录模式的应用场景 如果一个对象需要保存状态并可通过undo或rollback等操作恢复到以前的状态时,可以使用Memento模式。1)一个类需要保存它的对象的状态(相当于Originat转载 2012-09-15 10:52:58 · 653 阅读 · 0 评论 -
java设计模式之策略模式 Strategy
策略模式(Strategy):定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化不会影响到使用算法的用户。策略模式是一种定义一系列算法的方法,从概念上看,所有这些算法完成的都是相同的工作,只是实现上不同,它可以以相同的方式调用所有的算法,减少各种算法类与算法使用类之间的耦合。策略模式是用来封装算法的,但在实践中发现,可以用它来封装几乎任何类型的规则,只要在分析转载 2012-09-15 11:02:00 · 566 阅读 · 0 评论 -
java设计模式 之生成器模式 Builder
生成器模式也称为建造者模式。生成器模式的意图在于将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示(GoF)。在软件设计中,有时候面临着一个非常复杂的对象的创建工作。这个复杂的对象通常可以分成几个较小的部分,由各个子对象组合出这个复杂对象的过程相对来说比较稳定,但是子对象的创建过程各不相同并且可能面临变化。根据OOD中的OCP原则,应该对这些子对象的创建过程进行变化封装。转载 2012-09-15 10:17:33 · 582 阅读 · 0 评论 -
java 设计模式之工厂模式Factory Method
目录(?)[-]一、工厂模式的介绍二、简单工厂模式简单工厂模式介绍简单工厂模式角色简单工厂模式的优缺点简单工厂模式的适用环境简单工厂模式的举例三、工厂方法模式工厂方法模式的介绍工厂方法模式角色工厂方法模式的优缺点工厂方法模式的适用环境工厂方法模式的举例四、抽象工厂模式抽象工厂模式的介绍抽象工厂模式角色抽象工厂模式的优缺点抽象工厂模式的适用环境抽象工厂模式的举转载 2012-09-13 16:25:53 · 829 阅读 · 0 评论 -
java 设计模式之原型模式Prototype
1、 意图用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。2、 适用性当一个系统应该独立于它的产品创建、构成、表示时,要使用Prototype模式;当要实例化的类是在运行时刻制定时。例如,通过动态装载;为了避免创建一个与产品类层次平行的工厂类层次时; 当一个类的实例只能有几个不同状态组合中的一种时。3、 结构4、转载 2012-09-15 10:20:02 · 488 阅读 · 0 评论 -
java设计模式之单例模式Singleton
1、 意图保证一个类仅有一个实例,并提供一个反问它的全局访问点。2、 适用性在下面情况下可以使用Singleton模式当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。3、 结构4、 参与者Singleton ——转载 2012-09-15 10:21:31 · 562 阅读 · 0 评论 -
java设计模式之代理模式Proxy
1、 意图为其他对象提供一种代理以控制对这个对象的访问。2、 适用性 需要为一个对象在不同的地址空间提供局部代表的时候,可以使用远程代理。需要按照创建开销很大对象的时候,可以使用虚代理。 需要控制原始对象的访问的时候,可以使用保护代理。需要在访问对象执行一些附加操作的时候,可以使用智能指引代理。3、 结构4、 参与者Proxy转载 2012-09-15 10:40:17 · 639 阅读 · 0 评论 -
java设计模式之访问者模式 Visitor
一、引子 对于系统中一个已经完成的类层次结构,我们已经给它提供了满足需求的接口。但是面对新增加的需求,我们应该怎么做呢?如果这是为数不多的几次变动,而且你不用为了一个需求的调整而将整个类层次结构统统地修改一遍,那么直接在原有类层次结构上修改也许是个 不错 的主意。 但是往往我们遇到的却是:这样的需求变动也许会不停的发生;更重要的是需求的任何变动可能都要让你将整个类层次结构修改个转载 2012-09-15 11:05:28 · 695 阅读 · 0 评论