上一页 1 2 3 4 5 6 7 ··· 11 下一页

2012年7月29日

中介者模式(Mediator Pattern)

摘要: 模式动机:1、在用户与用户直接聊天的设计方案中,用户对象之间存在很强的关联性,将导致系统出现如下问题:1)系统结构复杂:对象之间存在大量的相互关联和调用,若有一个对象发生变化,则需要跟踪和该对象关联的其他所有对象,并进行适当处理。2)对象可重用性差:由于一个对象和其他对象具有很强的关联,若没有其他对象的支持,一个对象很难被另一个系统或模块重用,这些对象表现出来更像一个不可分割的整体,职责较为混乱。3)系统扩展性低:增加一个新的对象需要在原有相关对象上增加引用,增加新的引用关系也需要调整原有对象,系统耦合度很高,对象操作很不灵活,扩展性差2、在面向对象的软件设计与开发过程中,根据“单一职责原则” 阅读全文

posted @ 2012-07-29 11:56 IT@民工 阅读(212) 评论(0) 推荐(0) 编辑

2012年7月28日

迭代器模式(Iterator Pattern)

摘要: 模式动机:1、一个聚合对象,如一个列表(List)或者一个集合(Set),应该提供一种方法来让别人可以访问它的元素,而又不需要暴露它的内部结构。2、针对不同的需要,可能还要以不同的方式遍历整个聚合对象,但是我们并不希望在聚合对象的抽象层接口中充斥着各种不同遍历的操作。3、怎样遍历一个聚合对象,又不需要了解聚合对象的内部结构,还能够提供多种不同的遍历方式,这就是迭代器模式所要解决的问题。4、在迭代器模式中,提供一个外部的迭代器来对聚合对象进行访问和遍历,迭代器定义了一个访问该聚合元素的接口,并且可以跟踪当前遍历的元素,了解哪些元素已经遍历过而哪些没有。5、有了迭代器模式,我们会发现对一个复杂的聚 阅读全文

posted @ 2012-07-28 15:34 IT@民工 阅读(204) 评论(0) 推荐(0) 编辑

2012年7月26日

命令模式(Command Pattern)

摘要: 模式动机:1、在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活。2、命令模式可以对发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。这就是命令模式的模式动机。模式意图:命令模式(Command Pattern):将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可 阅读全文

posted @ 2012-07-26 15:03 IT@民工 阅读(257) 评论(0) 推荐(0) 编辑

2012年7月25日

责任链模式(Chain Of Responsibility Pattern)

摘要: 行为模式概述1、行为型模式(BehavioralPattern)是对在不同的对象之间划分责任和算法的抽象化。2、行为型模式不仅仅关注类和对象的结构,而且重点关注它们之间的相互作用。3、通过行为型模式,可以更加清晰地划分类与对象的职责,并研究系统在运行时实例对象之间的交互。在系统运行时,对象并不是孤立的,它们可以通过相互通信与协作完成某些复杂功能,一个对象在运行时也将影响到其他对象的运行。行为型模式分为类行为型模式和对象行为型模式两种:类行为型模式:类的行为型模式使用继承关系在几个类之间分配行为,类行为型模式主要通过多态等方式来分配父类与子类的职责。对象行为型模式:对象的行为型模式则使用对象的聚 阅读全文

posted @ 2012-07-25 20:12 IT@民工 阅读(407) 评论(0) 推荐(0) 编辑

java动态代理简单实例

摘要: 在目前的Java开发包中包含了对动态代理的支持,但是其实现只支持对接口的的实现。其实现主要通过是java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口。Proxy类主要用来获取动态代理对象,InvocationHandler接口用来约束调用者实现,如下,HelloWorld接口定义的业务方法,HelloWorldImpl是HelloWorld接口的实现,HelloWorldHandler是InvocationHandler接口实现。代码如下:业务接口:public interface HelloWorld {void say 阅读全文

posted @ 2012-07-25 15:36 IT@民工 阅读(174) 评论(0) 推荐(0) 编辑

代理模式(Proxy Pattern)

摘要: 模式动机:1、在某些情况下,一个客户不想或者不能直接引用一个对象,此时可以通过一个称之为“代理”的第三者来实现间接引用。代理对象可以在客户端和目标对象之间起到中介的作用,并且可以通过代理对象去掉客户不能看到的内容和服务或者添加客户需要的额外服务。2、通过引入一个新的对象(如小图片和远程代理对象)来实现对真实对象的操作或者将新的对象作为真实对象的一个替身,这种实现机制即为代理模式,通过引入代理对象来间接访问一个对象,这就是代理模式的模式动机。模式意图:代理模式(Proxy Pattern):给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式的英文叫做Proxy或Surrogate 阅读全文

posted @ 2012-07-25 12:13 IT@民工 阅读(275) 评论(0) 推荐(0) 编辑

2012年7月24日

享元模式(Flyweight Pattern)

摘要: 模式动机:1、面向对象技术可以很好地解决一些灵活性或可扩展性问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致运行代价过高,带来性能下降等问题。2、享元模式正是为解决这一类问题而诞生的。享元模式通过共享技术实现相同或相似对象的重用。3、在享元模式中可以共享的相同内容称为内部状态(Intrinsic State),而那些需要外部环境来设置的不能共享的内容称为外部状态(Extrinsic State),由于区分了内部状态和外部状态,因此可以通过设置不同的外部状态使得相同的对象可以具有一些不同的特征,而相同的内部状态是可以共享的。4、在享元模式中通常会出现工厂模式,需要创建 阅读全文

posted @ 2012-07-24 16:23 IT@民工 阅读(279) 评论(0) 推荐(0) 编辑

外观模式(Facade Pattern)

摘要: 模式动机:引入外观角色之后,用户只需要直接与外观角色交互,用户与子系统之间的复杂关系由外观角色来实现,从而降低了系统的耦合度。模式动机:外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。UML图:角色:1、Facade:外观角色是在客户端直接调用的角色,在外观角色中可以知道相关的(一个或者多个)子系统的功能和责任,它将所有从客户端发来的请求委派到相应的子系统去,传递给相应的子系统对象处理。2、Sub 阅读全文

posted @ 2012-07-24 10:15 IT@民工 阅读(225) 评论(0) 推荐(0) 编辑

2012年7月23日

装饰模式(Decorator)

摘要: 模式动机:一般有两种方式可以实现给一个类或对象增加行为:1、继承机制,使用继承机制是给现有类添加功能的一种有效途径,通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的,用户不能控制增加行为的方式和时机。2、关联机制,即将一个类的对象嵌入另一个对象中,由另一个对象来决定是否调用嵌入对象的行为以便扩展自己的行为,我们称这个嵌入的对象为装饰器(Decorator)。装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任,换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不需要创造更多子类的情况下,将对象的功能加以扩展。这就是装饰模式的模式 阅读全文

posted @ 2012-07-23 14:35 IT@民工 阅读(183) 评论(0) 推荐(0) 编辑

2012年7月21日

组合模式(Composite Pattern)

摘要: 模式动机:1、对于树形结构,当容器对象(如文件夹)的某一个方法被调用时,将遍历整个树形结构,寻找也包含这个方法的成员对象(可以是容器对象,也可以是叶子对象,如子文件夹和文件)并调用执行。(递归调用)2、由于容器对象和叶子对象在功能上的区别,在使用这些对象的客户端代码中必须有区别地对待容器对象和叶子对象,而实际上大多数情况下客户端希望一致地处理它们,因为对于这些对象的区别对待将会使得程序非常复杂。3、组合模式描述了如何将容器对象和叶子对象进行递归组合,使得用户在使用时无须对它们进行区分,可以一致地对待容器对象和叶子对象,这就是组合模式的模式动机。模式意图:1、 组合模式(CompositePat 阅读全文

posted @ 2012-07-21 14:22 IT@民工 阅读(320) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 ··· 11 下一页

导航