分享
 
 
 

设计模式23式详解

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

v\:* {behavior:url(#default#VML);}

o\:* {behavior:url(#default#VML);}

w\:* {behavior:url(#default#VML);}

.shape {behavior:url(#default#VML);}

23个设计模式列表

xuhong

xuhong

18

205

2003-06-11T05:37:00Z

2003-06-14T02:49:00Z

12

1236

7050

delisoft

58

14

8657

9.2812

120

7.8 磅

0

2

23个设计模式列表

TOC \o "1-2" \h \z 创建型模式... 2 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100330030000000

1. Abstract Factory.. 2 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100330031000000提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。

2. Builder 2 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100330032000000 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

3. Factory Method.. 3 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100330033000000定义一个用于创建对象的接口,让子类决定实例化哪一个类。使一个类的实例化延迟到其子类。

4. Prototype.. 3 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100330034000000用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。

5. Singleton. 3 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100330035000000 保证一个类仅有一个实例,并提供一个访问它的全局访问点。

结构型模式... 4 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100330036000000

1. Adapter. 4 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100330037000000将一个类的接口转换成客户希望的另外一个接口。

2. Bridge.. 4 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100330038000000将抽象部分与它的实现部分分离,使它们都可以独立的变化。

3. Composite.. 5 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100330039000000将对象组合成树形结构以表示“部分-整体”的层次结构。

4. Decorator. 5 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100340030000000动态地给一个对象添加一些额外的职责。

5. Façade.. 6 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100340031000000为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

6. Flyweight. 6 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100340032000000运用共享技术有效地支持大量细粒度的对象。

7. Proxy.. 7 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100340033000000为其它对象提供一种代理以控制对这个对象的访问。

行为模式... 7 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100340034000000

1. Chain of Responsibility. 7 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100340035000000 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。

2. Command. 7 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100340036000000 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。

3. Interpreter. 8 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100340037000000给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语句中的句子。

4. Iterator 8 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100340038000000 提供一种方法顺序访问一个聚合对象中的各个元素,而不需要暴露该对象的内部表示。

5. Mediator 8 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100340039000000 用一个中介对象来封装一系列的对象交互。

6. Memento.. 9 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100350030000000在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。

7. Observer 9 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100350031000000 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。

8. State.. 9 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100350032000000允许一个对象在其内部状态改变时改变它的行为。

9. Strategy. 10 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100350033000000 定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。

10. Template Method.. 10 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100350034000000定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。

11. Visitor. 10 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300340033003100300034003100350035000000表示一个作用于某对象结构中的各元素的操作。

创建型模式

共5种

1. Abstract Factory

抽象工厂

提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。(别名:Kit)

实例描述:

交互图

优缺点

优点:(1)封装创建过程。客户不用知道类厂是如何创建类实例的,类厂封闭了所有创建的细节。这样可选择不同的创建方法,增加了灵活性。

(2)将客户与具体类隔离,提高了各自的可重用性。

缺点:Factory类层次与具体类层次通常是平行的(即一一对应的)。增加一个具体类,一般也要相应地增加一个factory类,增加了系统复杂度。

实现

(1)Abstract Factory类中通常是一组Factory Method的集合。个人认为与Factory Method模式没有本质区别。

(2)通常可以把工厂作为单件。

2. Builder

生成器

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

各类之间的交互关系如下图所示:

3. Factory Method

工厂方法

定义一个用于创建对象的接口,让子类决定实例化哪一个类。使一个类的实例化延迟到其子类。(别名:虚构造器 Virtual Constructor)

4. Prototype

原型

用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。

5. Singleton

单件

保证一个类仅有一个实例,并提供一个访问它的全局访问点。

结构型模式

共7种

1. Adapter

适配器

将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能在一起工作的那些类可以一起工作。(别名:包装器 Wrapper)

2. Bridge

桥接

将抽象部分与它的实现部分分离,使它们都可以独立的变化。(别名:Handle/Body)

例如

3. Composite

组合

将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。

4. Decorator

装饰

动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。(别名:包装器Wrapper)

5. Façade

外观

为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

6. Flyweight

享元

运用共享技术有效地支持大量细粒度的对象。

这么模式中最重要的概念是内部状态和外部状态。内部状态存储于flyweight中,包含了独立于flyweight场景的外部状态,这些信息使得flyweight可以被共享;外部状态取决于flyweight场景,并根据场景变化,因此不可共享。用户负责在必要的时候将外部状态传递给flyweight.

1)

Remote Proxy 可以隐藏一个对象存在于不同地址空间的事实;

2) Virtual Proxy 可以进行优化,例如在显示包含大图片的文档时,在初始时可以不显示图片,只显示图片的大小,根据需要再创建图片对象,显示图片;

3) Protection Proxies 可以在访问一个对象是附加一些内务处理,如权限验证等

4) Smart Reference 可以智能地管理代理引用的对象,如对引用的对象记数,没有引用时释放对象;为引用对象加锁等;

7. Proxy

代理

为其它对象提供一种代理以控制对这个对象的访问。(别名:Surrogate)

行为模式

共11种

1. Chain of Responsibility

职责链

使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

CoR的优点:

因为无法预知来自外界的请求是属于哪种类型,每个类如果碰到它不能处理的请求只要放弃就可以。无疑这降低了类之间的耦合性。

缺点是效率低,因为一个请求的完成可能要遍历到最后才可能完成,当然也可以用树的概念优化。 在Java

AWT1.0中,对于鼠标按键事情的处理就是使用CoR,到Java.1.1以后,就使用Observer代替CoR

扩展性差,因为在CoR中,一定要有一个统一的接口Handler.局限性就在这里。

2. Command

命令

将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。(别名:动作 Action 事务 Transaction)

3. Interpreter

解释器

给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语句中的句子。

4. Iterator

迭代器

提供一种方法顺序访问一个聚合对象中的各个元素,而不需要暴露该对象的内部表示。(别名:游标 Cursor)

5. Mediator

中介者

用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

6. Memento

备忘录

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。(别名:Token)

对象交互图

一般情况下,Memento要存取Originator的私有数据,一种方法是把Memento设为Originator的友元,让Memento自己来取数据。另一种方法是Originator自己把自己的私有数据告诉给Memento。

7. Observer

观察者

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。(别名:依赖Dependents,发布-订阅 Publish-Subscribe)

8. State

状态

允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。(别名:状态对象 Objects for States)

9. Strategy

策略

定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。本模式使得算法可以独立于使用它的客户而变化。(别名:政策 Policy)

10. Template Method

模板方法

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

11. Visitor

访问者

表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有