设计模式22——Visitor设计模式

Visitor访问者设计模式是在不修改已有程序结构的前提下,通过添加额外的“访问者”来完成对已有代码功能的提升。  Visitor访问者设计模式的角色: (1) 访问者角色(Visitor):声明一个访问接口。接口的名称和方法的参数标识了向访问者发送请求的元素角色。这样访问者就可以通过该元素角...

2012-06-08 14:29:09

阅读数 1369

评论数 0

设计模式21——Interpreter设计模式

Interpreter解释器设计模式的定义:给定一个语言,定义其文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 Interpreter解释器设计模式角色如下: (1).抽象表达式(AbstractExpression)角色:声明一个所有的具体表达式角色都需要实现的抽...

2012-06-06 17:05:16

阅读数 1438

评论数 0

设计模式20——Mediator设计模式

Mediator中介者设计模式是通过一个中介对象封装一系列关于对象交互行为. Mediator中介者设计模式中的角色如下: (1).中介者(Mediator):抽象定义了“同事”(colleagues,稍后有定义)们通信的接口。 (2).具体中介者(Concrete Mediator):实现...

2012-06-01 14:41:08

阅读数 1175

评论数 0

设计模式19——Command设计模式

Command命令设计模式将一个请求封装成一个对象,从而使你可用不同的请求对客户进行操作。Command命令设计模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。每一个命令都是一个操作,命令请求发出请求要求执行一个操作;命令接受方收到请求,并执行操作。命令模式允...

2012-05-18 15:46:05

阅读数 2043

评论数 0

设计模式18——Chain of Responsibility设计模式

Chain of Responsibility(CoR)责任链设计模式是用一系列请求处理器试图处理一个请求,这些请求处理器之间是一个松散耦合,唯一的共同点是在他们之间传递请求。例如客户端发送一个请求,请求处理器A先处理,如果A没有处理或者无法处理,就将请求传递给请求处理器B,如果B没有处理或者无法...

2012-05-13 17:25:55

阅读数 1576

评论数 0

设计模式17——Observer设计模式

Observer观察者设计模式用于将对象的变化通知给感兴趣的用户。在Observer模式中的角色为主题(subject)与观察者(observer),观察者订阅它感兴趣的主题,一个主题可以被多个观 察者订阅,当主题的状态发生变化时,它必须通知(notify)所有订阅它的观察者,观察者检视主题的状态...

2012-05-11 15:41:37

阅读数 1410

评论数 0

设计模式16——Memento设计模式

Memento备忘录设计模式是一个保存另外一个对象内部状态拷贝的对象,这样以后就可以将该对象恢复到以前保存的状态。Memento备忘录设计模式的结构如下: Memento备忘录设计模式有以下3个重要角色: Originator:需要保存内部状态的对象。 Caretaker:为Or...

2012-04-25 19:03:25

阅读数 2057

评论数 0

设计模式15——Template Method设计模式

Template Method模板方法设计模式定义一个操作中算法的骨架,将具体步骤的执行延迟到子类中实现。Java中的抽象类就是使用了模板方法设计模式。模板方法设计模式结构如下: 以文档处理为例,Template Method设计模式简单例子如下: abstract class D...

2012-04-25 16:26:14

阅读数 1277

评论数 0

设计模式14——Flyweight设计模式

Flyweight享元设计模式是为了避免大量拥有相同内容的小类重复创建,而使大家共享一个类的模式。Flyweight享元设计模式实质是运用一个简单工厂方法模式,外加一个单类模式实现细粒度原件的共享。享元模式结构如下: Flyweight享元设计模式有两个重要概念: 以文字处理软件中...

2012-04-24 17:52:17

阅读数 1417

评论数 0

设计模式13——Bridge设计模式

Bridge桥接设计模式是将一组功能(实现)与另一组使用该功能的其他对象(行为)分离开来,以便达到单一因素变化,然后使用对象调用的方式将这两组关联系起来,将问题的行为和实现分离开来实现,通过用聚合代替继承来解决子类爆炸性增长的问题。 Bridge桥接设计模式结构如下: 还是以画图为例演示Bri...

2012-04-24 15:17:46

阅读数 1517

评论数 0

设计模式12——Decorator设计模式

Decorator装饰设计模式是动态给一个对象添加一些额外的职责,但同时又不影响对象本身已有的功能。 通常使用继承来实现功能的扩展,但是如果这些需要扩展的功能的种类很烦多,就会生成很多子类,增加系统复杂性。同时由于使用继承实现功能的扩展时,必须可预见这些扩展功能,这些功能是编译时就确定的了,是静...

2012-04-23 17:39:24

阅读数 1500

评论数 0

设计模式11——Composite设计模式

Composite组合设计模式属于对象的结构模式,有时又叫做部分-整体(Part-Whole)模式。  组合设计模式将对象组织到树型结构中,可以用来描述整体与部分的关系。组合模式可以使客户端将单纯元素与复合元素同等看待。  组合设计模式涉及到的三个角色  (1).抽象构件(Component...

2012-04-23 15:46:10

阅读数 1472

评论数 0

设计模式10——Adapter设计模式

Adapter适配器模式是将两个不兼容的类组合在一起使用。生活中笔记本电脑和手机等数码产品的充电器就是一个适配器,将家用220V的交流电转换为笔记本或手机正常工作所需的目标电压和电流。适配器起到一种转换和包装的作用。 Adapter设计模式主要目的组合两个不相干类,常用有两种方法:第一种解决方案...

2012-04-23 14:19:53

阅读数 10764

评论数 1

设计模式9——Façade设计模式

Façade门面设计模式为子系统中的一组接口提供一个一致的界面,应用程序本身将不再直接依赖于子系统原件,而是依赖一个门面,当想要修改某个原件的行为时,只需要修改实现类即可,应用程序本身不需要做任何修改。Façade门面设计模式结构如下: 以JDBC为例演示Façade门面设计模式: ...

2012-04-23 11:10:35

阅读数 3054

评论数 0

设计模式8——Builder设计模式

Builder建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们,用户不需要了解所构建对象的内部具体构建细节,Builder建造设计模式的目的是为了将构造复杂...

2012-04-21 14:50:58

阅读数 1921

评论数 1

设计模式7——Prototype设计模式

Prototype原型设计模式是指用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。Prototype原型模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何关于对象创建的细节。 原型模式的UML图如下: Prototype模式例子如下: //抽象原型类 ...

2012-04-19 15:16:46

阅读数 1320

评论数 0

设计模式6——Factory设计模式

Factory工厂设计模式为创建对象提供了一种抽象,而对使用者屏蔽了对象创建的具体细节过程,工厂模式有三种:简单工厂模式,抽象工厂模式和工厂方法模式。 (1).简单工厂模式: 又叫静态工厂模式,简单工厂只包括一个抽象产品类(该类可以是接口,也可以是具体的类),所有需要的产品类都是该抽象产品类的...

2012-04-13 17:14:06

阅读数 2006

评论数 0

设计模式5——Strategy设计模式

Strategy策略设计模式主要是定义一系列的算法,把这些算法封装成单独的类,在运行时动态选择需要的算法,策略模式机制如下: 策略模式例子如下: //文本替换策略 abstract class TextStrategy { protected String text;...

2012-04-13 13:05:27

阅读数 1246

评论数 0

设计模式4——Itrator设计模式

Iterator迭代器模式,提供一种统一的方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节,迭代器模式是为容器而设计。 程序对容器对象的访问必然涉及到遍历算法,不同的容器遍历算法是不同的,List,Stack和Set等等常用容器遍历元素的算法各不相同。解决容器遍...

2012-04-12 15:51:54

阅读数 1589

评论数 0

设计模式3——State设计模式

State状态设计模式类似于Switch多路分支功能的开关,State状态模式机制如下: 状态模式UML图如下: State状态设计模式用于改变对象的行为,在代理的生命周期里,随着状态变化从一个目标实现程序切换到另一个目标实现程序。 我们经常遇到如下的程序代码: public class ...

2012-04-07 16:27:15

阅读数 1512

评论数 0

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