
设计模式
文章平均质量分 79
chjttony
java软件工程师。
展开
-
设计模式6——Factory设计模式
Factory工厂设计模式为创建对象提供了一种抽象,而对使用者屏蔽了对象创建的具体细节过程,工厂模式有三种:简单工厂模式,抽象工厂模式和工厂方法模式。(1).简单工厂模式:又叫静态工厂模式,简单工厂只包括一个抽象产品类(该类可以是接口,也可以是具体的类),所有需要的产品类都是该抽象产品类的子类。简单工厂模式中工厂为具体产品工厂,产品为抽象产品,由工厂实例创建产品实例:一个生原创 2012-04-13 17:14:06 · 2255 阅读 · 0 评论 -
设计模式7——Prototype设计模式
Prototype原型设计模式是指用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。Prototype原型模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何关于对象创建的细节。原型模式的UML图如下:Prototype模式例子如下://抽象原型类 abstract class Shape implements Colneable{ String原创 2012-04-19 15:16:46 · 1511 阅读 · 0 评论 -
设计模式15——Template Method设计模式
Template Method模板方法设计模式定义一个操作中算法的骨架,将具体步骤的执行延迟到子类中实现。Java中的抽象类就是使用了模板方法设计模式。模板方法设计模式结构如下:以文档处理为例,Template Method设计模式简单例子如下:abstract class DocumentUtil{ public void openDocument(String name)原创 2012-04-25 16:26:14 · 1462 阅读 · 0 评论 -
设计模式22——Visitor设计模式
Visitor访问者设计模式是在不修改已有程序结构的前提下,通过添加额外的“访问者”来完成对已有代码功能的提升。 Visitor访问者设计模式的角色:(1) 访问者角色(Visitor):声明一个访问接口。接口的名称和方法的参数标识了向访问者发送请求的元素角色。这样访问者就可以通过该元素角色的特定接口直接访问它。(2) 具体访问者角色(Concrete Visitor):实现访问者角色原创 2012-06-08 14:29:09 · 1562 阅读 · 0 评论 -
设计模式21——Interpreter设计模式
Interpreter解释器设计模式的定义:给定一个语言,定义其文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。Interpreter解释器设计模式角色如下:(1).抽象表达式(AbstractExpression)角色:声明一个所有的具体表达式角色都需要实现的抽象接口。这个接口主要定义一个interpret()方法,称做解释操作。 (2).终结符表达式(Te原创 2012-06-06 17:05:16 · 1756 阅读 · 0 评论 -
设计模式17——Observer设计模式
Observer观察者设计模式用于将对象的变化通知给感兴趣的用户。在Observer模式中的角色为主题(subject)与观察者(observer),观察者订阅它感兴趣的主题,一个主题可以被多个观 察者订阅,当主题的状态发生变化时,它必须通知(notify)所有订阅它的观察者,观察者检视主题的状态变化,并作出对应的动作,所以Observer模式也称之为Publish-Subscribe模式。 Ob原创 2012-05-11 15:41:37 · 1586 阅读 · 0 评论 -
设计模式11——Composite设计模式
Composite组合设计模式属于对象的结构模式,有时又叫做部分-整体(Part-Whole)模式。 组合设计模式将对象组织到树型结构中,可以用来描述整体与部分的关系。组合模式可以使客户端将单纯元素与复合元素同等看待。 组合设计模式涉及到的三个角色 (1).抽象构件(Component)角色:这是一个抽象角色,它给参加组合的对象规定一个接口。这个角色给出共有的接口机器默认行为。 (原创 2012-04-23 15:46:10 · 1720 阅读 · 0 评论 -
设计模式3——State设计模式
State状态设计模式类似于Switch多路分支功能的开关,State状态模式机制如下:状态模式UML图如下:State状态设计模式用于改变对象的行为,在代理的生命周期里,随着状态变化从一个目标实现程序切换到另一个目标实现程序。我们经常遇到如下的程序代码:public class Creature{ private Boolean isFrog = tru原创 2012-04-07 16:27:15 · 1741 阅读 · 0 评论 -
设计模式13——Bridge设计模式
Bridge桥接设计模式是将一组功能(实现)与另一组使用该功能的其他对象(行为)分离开来,以便达到单一因素变化,然后使用对象调用的方式将这两组关联系起来,将问题的行为和实现分离开来实现,通过用聚合代替继承来解决子类爆炸性增长的问题。 Bridge桥接设计模式结构如下:还是以画图为例演示Bridge桥接设计模式,例子代码如下://行为interface Shape{pub原创 2012-04-24 15:17:46 · 1842 阅读 · 0 评论 -
设计模式8——Builder设计模式
Builder建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们,用户不需要了解所构建对象的内部具体构建细节,Builder建造设计模式的目的是为了将构造复杂对象的过程和它的部件解耦。Builder建造者设计模式中有两个重要角色:Director指导者和B原创 2012-04-21 14:50:58 · 2230 阅读 · 1 评论 -
设计模式5——Strategy设计模式
Strategy策略设计模式主要是定义一系列的算法,把这些算法封装成单独的类,在运行时动态选择需要的算法,策略模式机制如下:策略模式例子如下://文本替换策略abstract class TextStrategy { protected String text; public TextStrategy(String text) { t原创 2012-04-13 13:05:27 · 1406 阅读 · 0 评论 -
设计模式4——Itrator设计模式
Iterator迭代器模式,提供一种统一的方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节,迭代器模式是为容器而设计。程序对容器对象的访问必然涉及到遍历算法,不同的容器遍历算法是不同的,List,Stack和Set等等常用容器遍历元素的算法各不相同。解决容器遍历算法差异有两种方案:第一,可以将遍历方法塞到容器对象中去,容器承受了过多的功能,它不仅要负责自己“容原创 2012-04-12 15:51:54 · 1844 阅读 · 0 评论 -
设计模式16——Memento设计模式
Memento备忘录设计模式是一个保存另外一个对象内部状态拷贝的对象,这样以后就可以将该对象恢复到以前保存的状态。Memento备忘录设计模式的结构如下:Memento备忘录设计模式有以下3个重要角色:Originator:需要保存内部状态的对象。Caretaker:为Originator保存并恢复状态的对象。Memento:存放Originator内部状态的对象,由O原创 2012-04-25 19:03:25 · 2345 阅读 · 0 评论 -
设计模式20——Mediator设计模式
Mediator中介者设计模式是通过一个中介对象封装一系列关于对象交互行为.Mediator中介者设计模式中的角色如下:(1).中介者(Mediator):抽象定义了“同事”(colleagues,稍后有定义)们通信的接口。(2).具体中介者(Concrete Mediator):实现了“同事”间的通信接口。(3).同事(Colleague):参与通信的实体抽象。(4).具体同原创 2012-06-01 14:41:08 · 1411 阅读 · 0 评论 -
设计模式18——Chain of Responsibility设计模式
Chain of Responsibility(CoR)责任链设计模式是用一系列请求处理器试图处理一个请求,这些请求处理器之间是一个松散耦合,唯一的共同点是在他们之间传递请求。例如客户端发送一个请求,请求处理器A先处理,如果A没有处理或者无法处理,就将请求传递给请求处理器B,如果B没有处理或者无法处理,就将请求传递到请求处理器C去处理,所有这些请求处理器构成一条请求处理责任链。Chain of R原创 2012-05-13 17:25:55 · 1811 阅读 · 0 评论 -
设计模式10——Adapter设计模式
Adapter适配器模式是将两个不兼容的类组合在一起使用。生活中笔记本电脑和手机等数码产品的充电器就是一个适配器,将家用220V的交流电转换为笔记本或手机正常工作所需的目标电压和电流。适配器起到一种转换和包装的作用。Adapter设计模式主要目的组合两个不相干类,常用有两种方法:第一种解决方案是修改各自类的接口。但是如果没有源码,或者不愿意为了一个应用而修改各自的接口,则需要使用Adapter原创 2012-04-23 14:19:53 · 11979 阅读 · 1 评论 -
设计模式14——Flyweight设计模式
Flyweight享元设计模式是为了避免大量拥有相同内容的小类重复创建,而使大家共享一个类的模式。Flyweight享元设计模式实质是运用一个简单工厂方法模式,外加一个单类模式实现细粒度原件的共享。享元模式结构如下:Flyweight享元设计模式有两个重要概念:以文字处理软件中对象为例内部状态intrinsic:可以共享的对象,如相同的字。外部状态extrinsic:不原创 2012-04-24 17:52:17 · 1640 阅读 · 0 评论 -
设计模式9——Façade设计模式
Façade门面设计模式为子系统中的一组接口提供一个一致的界面,应用程序本身将不再直接依赖于子系统原件,而是依赖一个门面,当想要修改某个原件的行为时,只需要修改实现类即可,应用程序本身不需要做任何修改。Façade门面设计模式结构如下:以JDBC为例演示Façade门面设计模式://JDBC Facadeinterface JDBCUtil{ public Statem原创 2012-04-23 11:10:35 · 3500 阅读 · 0 评论 -
设计模式12——Decorator设计模式
Decorator装饰设计模式是动态给一个对象添加一些额外的职责,但同时又不影响对象本身已有的功能。通常使用继承来实现功能的扩展,但是如果这些需要扩展的功能的种类很烦多,就会生成很多子类,增加系统复杂性。同时由于使用继承实现功能的扩展时,必须可预见这些扩展功能,这些功能是编译时就确定的了,是静态的。使用Decorator装饰设计模式就可以根据功能需要有用户动态决定加入的方式和时机,实现“即插即原创 2012-04-23 17:39:24 · 1662 阅读 · 0 评论 -
设计模式19——Command设计模式
Command命令设计模式将一个请求封装成一个对象,从而使你可用不同的请求对客户进行操作。Command命令设计模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。每一个命令都是一个操作,命令请求发出请求要求执行一个操作;命令接受方收到请求,并执行操作。命令模式允许命令请求方和命令接收方独立开来,使得命令请求方不必 知道命令接收方的接口,更不必知道请求是怎么被接收原创 2012-05-18 15:46:05 · 2218 阅读 · 0 评论 -
设计模式2——Proxy设计模式
Proxy代理设计模式是一种控制对象访问的设计模式,类似于网络代理,网络代理机制如下图:Proxy代理设计模式机制如下:代理模式UML图如下:代理模式顺序图如下:客户端程序通过代理程序来访问真正的目标程序,代理程序对外隐藏了目标程序。普通代理设计模式例子代码如下:interface ProxyBase{ public void f();原创 2012-04-06 17:16:37 · 2124 阅读 · 3 评论 -
设计模式1——Singleton设计模式
Singleton单类模式是最简单的设计模式,它的主要作用是保证在程序运行生命周期中,使用了单类模式的类只能有一个实例对象存在。单类模式实现了类似C语言中全局变量的功能,单类模式常用于注册/查找的服务。单类模式的UML图如下:单类模式有两种实现方式:饱汉模式和饿汉模式,如下:1.饱汉单类模式例子代码:public class Singleton1{ //原创 2012-04-04 18:09:43 · 2938 阅读 · 5 评论