- 浏览: 661370 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
sztime:
可以在文本框上绑定事件来禁用回车键, 我就是这样做的.在IE中 ...
form 回车自动提交问题 -
damoqiongqiu:
非常好的文章,很透彻不过有一句话小僧腆着脸补充一下:“1111 ...
为什么要用补码来做存储 -
wuyizhong:
原来如此啊。
form 回车自动提交问题 -
luliangy:
谢楼主~!
用C语言扩展Python的功能 -
kwong:
很有用,谢谢
火狐和IE 对css 样式解释的差异
23个设计模式列表
【创建型模式】
1. Abstract Factory 提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。
2. Builder 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
3. Factory Method 定义一个用于创建对象的接口,让子类决定实例化哪一个类。使一个类的实例化延迟到其子类。
4. Prototype 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。
5. Singleton 保证一个类仅有一个实例,并提供一个访问它的全局访问点。
【结构型模式】
1. Adapter 将一个类的接口转换成客户希望的另外一个接口。
2. Bridge 将抽象部分与它的实现部分分离,使它们都可以独立的变化。
3. Composite 将对象组合成树形结构以表示“部分-整体”的层次结构。
4. Decorator 动态地给一个对象添加一些额外的职责。
5. Facade 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加
容易使用。
6. Flyweight 运用共享技术有效地支持大量细粒度的对象。
7. Proxy 为其它对象提供一种代理以控制对这个对象的访问。
【行为模式】
1. Chain of Responsibility 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。
2. Command 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,
以及支持可撤消的操作。
3. Interpreter 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语句中的句子。
4. Iterator 提供一种方法顺序访问一个聚合对象中的各个元素,而不需要暴露该对象的内部表示。
5. Mediator 用一个中介对象来封装一系列的对象交互。
6. Memento 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。
7. Observer 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并
自动更新。
8. State 允许一个对象在其内部状态改变时改变它的行为。
9. Strategy 定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。
10. Template Method 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。
11. Visitor 表示一个作用于某对象结构中的各元素的操作。
创建型模式共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
模板方法
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。/SPAN>Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
11. Visitor
访问者
表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
发表评论
-
设计模式 图析
2011-09-24 14:27 710【observer】 【adapter】 【comm ... -
一个设计模式的图片
2009-05-03 02:14 532... -
Design Patterns in ActionScript–Factory Method
2009-02-24 13:37 763In our last topic, we talk abou ... -
Design Patterns in ActionScript-Strategy
2009-02-24 13:34 567Today, we’re going to talk abou ... -
Design Patterns in ActionScript-Mediator
2009-02-24 13:29 502Ok, the last pattern now. Let’s ... -
Design Patterns in ActionScript-Command
2009-02-24 13:21 615A few months ago, I was an inte ... -
Design Patterns in ActionScript-Chain of Responsib
2009-02-24 13:12 594When you need some help in a ho ... -
Design Patterns in ActionScript-Flyweight
2009-02-24 13:07 631In Action Script 3.0 we have th ... -
Design Patterns in ActionScript-Visitor
2009-02-24 11:26 507It’s our winter holiday now, an ... -
Design Patterns in ActionScript-Memento
2009-02-23 23:38 511Now, I’m using Microsoft word t ... -
Design Patterns in Action Script-Composite
2009-02-23 14:29 509Still remember the Interpreter ... -
Design Patterns in ActionScript-Interpreter
2009-02-23 14:26 658In web programming, we often us ... -
Design Patterns in ActionScript-Proxy
2009-02-23 14:19 623Have you ever use HTTP-proxy or ... -
Design Patterns in Action Script-State
2009-02-23 14:17 950Yesterday, when I was on my way ... -
Design Patterns in ActionScript-Builder
2009-02-23 14:16 516Have you ever buy a computer on ... -
Design Patterns in ActionScript-Prototype
2009-02-23 14:12 661When I want to write the Protot ... -
Design Patterns in ActionScript-Iterator
2009-02-23 14:07 568There is a famous saying in com ... -
Design Patterns in Action Script-Template Method
2009-02-23 14:04 493Do you like playing cards? If y ... -
Design Patterns in ActionScript-Observer
2009-02-23 14:00 589In GUI programming, event-drive ... -
Design Patterns in ActionScript-Singleton
2009-02-23 13:55 521In our real world, many things ...
相关推荐
这个压缩包“java常用23种设计模式(含源码解说).rar”包含了对Java开发者极其重要的23种经典设计模式的详细讲解和实例代码。 首先,我们要了解设计模式的三大分类:创建型模式、结构型模式和行为型模式。创建型模式...
总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元...
这份资料详细介绍了在Java编程中常用的23种设计模式,旨在提升开发者对于软件设计的理解和应用能力,从而写出更加高效、可维护和可扩展的代码。 首先,我们来看一下23种设计模式的分类:它们可以分为三大类,即创建...
五种常用的Java设计模式 Java设计模式是软件开发中的一种重要概念,主要用来解决软件设计中的一些问题。下面将总结五种常用的Java设计模式,分别是单例模式、工厂模式、建造模式、_observer模式和迭代器模式。 ...
本书设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好,表达清楚的软件设计模式,这些模式在实用环境下有特别有用...
《C# 23种设计模式》是一本深入解析C#编程中常用设计模式的权威指南,对于想要提升代码质量、提高软件可维护性的开发者来说,是不可或缺的参考资料。书中详细介绍了23种经典的设计模式,这些模式是软件工程实践中...
这个压缩包文件"23常用设计模式的UML"提供了23个经典设计模式的统一建模语言(UML)表示,这对于理解和应用这些模式至关重要。 首先,我们要了解UML是一种标准化的图形表示法,用于系统分析、设计和建模。它通过...
### 23种设计模式(C++)精解 #### 一、引言 设计模式作为软件工程领域的一个重要组成部分,对于提高软件的可维护性、可扩展性和可复用性具有重要意义。《23种设计模式(C++)》这本书系统地介绍了GoF(Gang of Four,...
### .NET 23种常用设计模式 #### 概述 设计模式是在软件工程领域内被广泛采用的一种软件设计思路,旨在解决特定类型的问题。在.NET框架中,这些设计模式同样适用并能帮助开发者构建更加灵活、可扩展及易于维护的...
以下是对标题和描述中提到的几种常用C#设计模式的详细解释: 1. **单例模式(Singleton)**: - 单例模式确保一个类只有一个实例,并提供全局访问点。在C#中,通常通过私有化构造函数和静态成员来实现。这样可以...
Java设计模式大全(23种设计模式).pdf,包含了常用的设计模式,仔细阅读对提高写代码的质量很有帮助!
浅析23种软件设计模式 软件设计模式是软件开发中的一种解决方案,旨在解决软件设计中的各种问题。下面我们将对23种常见的软件设计模式进行浅析。 1. 工厂模式:工厂模式的主要思想是将客户类和工厂类分开,客户类...
标题与描述中的“23种设计模式幽默见解”指向了软件工程领域中广泛采用的设计模式概念,通过一种轻松幽默的方式解读这些模式。设计模式是软件工程中为解决常见问题而形成的标准化解决方案,它们帮助开发者在面对特定...
下面是 Java 中 23 种设计模式的详细介绍: 创建型模式 1. 工厂方法模式(Factory Method Pattern) 工厂方法模式是一种创建型设计模式,它提供了一种创建对象的接口,允许客户端创建对象,而无需指定创建的类别...
设计模式概述和五种常用设计模式详解 设计模式是一种通用的解决方案,用于解决软件设计中常见的问题。它们提供了一种灵活、可维护、可扩展的设计方法,能够提高软件的质量和可维护性。在软件设计中,设计模式扮演着...
《23种设计模式彩图-PDF高清版》是一本专注于设计模式的教材,它不仅仅提供文字性的描述,而是结合了色彩丰富的UML(统一建模语言)图示,帮助读者以更直观的方式理解和记忆这23种设计模式。设计模式是软件工程中...
JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式
"精讲23种设计模式" 设计模式是软件开发中一种常用的编程思想,旨在提供通用的可重复使用的解决方案,以解决软件设计中常见的问题。通过本书,我们将总结和讲解了23种设计模式,涵盖了创建型、结构型、行为型三大类...
软件开发中常用的设计模式有23种,以下是其中的一些: 1. 单件模式(Singleton Pattern) 单件模式是创建型模式的一种,用于保证一个类仅有一个实例,并提供一个访问它的全局访问点。这种模式通常用于需要控制实例...
23种常用设计模式:这份学习资料包含了23种常用的设计模式,包括单例模式、工厂模式、观察者模式、代理模式等等。这些设计模式是软件开发中最常用的设计模式,掌握它们可以帮助开发人员提高软件的质量和可维护性。 ...