设计模式学习
jack_boy
这个作者很懒,什么都没留下…
展开
-
简单工厂方法
简单工厂方法将变化放到工厂类中,让子类能够独立的变化,相互之间不影响 比如有一个普通的netIO流,它有open,close,read,write操作,而SLL io也有同样的操作,但是操作的方法不同。如果在程序主体中用条件语句来区分,会让程序分支很多,要做修改时,不得不检查所有的代码,如果将IO流抽象为一个stream类,有open,close,read,write操作 [code="C...原创 2012-02-22 00:50:14 · 63 阅读 · 0 评论 -
策略模式(strategy)
定义:策略模式封装了一系列的算法,所有算法完成相同的工作,但实现不同,可以以相同的方法调用所有的算法,减少各种算法类与使用算法类之间的耦合。 结构图如下 [img]http://dl.iteye.com/upload/attachment/0063/6288/21679f46-2d5d-3341-ad31-41fe55d0dd53.png[/img] Context类维护一个Strate...原创 2012-02-23 09:25:04 · 117 阅读 · 0 评论 -
面向对象一般原则
抽象类:一种聚集相关实体的方式,其关注点是“如何设计具体的派生类/实现,从而可以以相同的方式使用他们” 接口:关注点是“要使用派生类/实现的对象” [img]http://dl.iteye.com/upload/attachment/0063/6778/233a9834-acd8-3e79-8c97-847e5d70575e.png[/img] ...原创 2012-02-23 23:19:51 · 65 阅读 · 0 评论 -
装饰模式(Decorator)
意图:动态的给一个对象添加一些额外的职责,就增加的功能来说,Decorator模式相比生成子类更为灵活。 别名:Wrapper 结构图如下: [img]http://dl.iteye.com/upload/attachment/0063/9712/f6f110e7-ab47-3f17-85c4-648d1fc5792c.png[/img] Decorator维持一个指向Component对...原创 2012-02-29 22:55:56 · 83 阅读 · 0 评论 -
代理模式(Proxy)
意图:为其它对象提供一种代理以控制对这个对象的访问。 结构图如下: [img]http://dl.iteye.com/upload/attachment/0064/3898/f16c00fb-4abd-37d6-86ea-a3fb9703257b.png[/img] 示例代码: [code="java"] public abstract class Subject { public ...原创 2012-03-07 13:14:10 · 92 阅读 · 0 评论 -
工厂方法(Factory Method)
意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到其子类。 别名:虚构造器(Virtual Constructor) 结构: [img]http://dl.iteye.com/upload/attachment/0064/8000/d1face1d-437a-31e3-bdbc-4206c662b966.png[/img] Pro...原创 2012-03-14 11:42:59 · 106 阅读 · 0 评论 -
观察者模式(Observer)
[b]意图:[/b]定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生改变时,会通知所有观察者对象,是他们能够自动更新自己。 [b]别名:[/b]Publish/Subscribe模式 [b]结构图:[/b] [img]http://dl.iteye.com/upload/attachment/0065/4792/986c437b-7937-3bd7-...原创 2012-03-26 15:51:29 · 93 阅读 · 0 评论 -
抽象工厂模式(abstract factory)
意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类 结构: [img]http://dl.iteye.com/upload/attachment/0064/8519/1bac3b70-2a35-3458-93da-80b9e97f083e.png[/img] AbstractFactory声明一个创建抽象产品的操作接口 ConcreteFactory实现创建具体产品对...原创 2012-03-27 22:49:56 · 66 阅读 · 0 评论 -
原型模式(prototype)
意图: 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 结构图 [img]http://dl.iteye.com/upload/attachment/0066/4112/0ec018ac-09b2-3cf0-a91d-b47e6be9b45f.png[/img] 实现示例: 原型Prototype: [code="java"]public abstract class P...原创 2012-04-11 18:40:50 · 88 阅读 · 0 评论