
设计模式
shiyuezhong
从事java web开发
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
抽象工厂
概述: 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 适用性: 1.一个系统要独立于它的产品的创建、组合和表示时。 2.一个系统要由多个产品系列中的一个来配置时。 3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。 4.当你提供一个产品类库,而只想显示它们的接口而不是实现时。 参与者: 1.AbstractFactory 声明一个创原创 2013-01-23 14:46:26 · 545 阅读 · 0 评论 -
装饰模式
概述: 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。 适用性: 1.在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。 2.处理那些可以撤消的职责。 3.当不能采用生成子类的方法进行扩充时。 参与者: 1.Component 定义一个对象接口,可以给这些对象动态地添加职责。 2.ConcreteCo原创 2013-02-18 10:56:48 · 496 阅读 · 0 评论 -
享元模式
概述: 运用共享技术有效地支持大量细粒度的对象。 适用性: 当都具备下列情况时,使用Flyweight模式: 1.一个应用程序使用了大量的对象。 2.完全由于使用大量的对象,造成很大的存储开销。 3.对象的大多数状态都可变为外部状态。 4.如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象。 5.应用程序不依赖于对象标识。由于Flywe原创 2013-02-18 11:11:49 · 731 阅读 · 0 评论 -
桥接模式
概述: 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 适用性: 1.你不希望在抽象和它的实现部分之间有一个固定的绑定关系。 例如这种情况可能是因为,在程序运行时刻实现部分应可以被选择或者切换。 2.类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。 这时Bridge模式使你可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充。 3.对一个抽象的实现部分的修原创 2013-02-05 15:55:23 · 552 阅读 · 0 评论 -
组合模式
概述: 将对象组合成树形结构以表示"部分-整体"的层次结构。"Composite使得用户对单个对象和组合对象的使用具有一致性"。 适用性: 1.你想表示对象的部分-整体层次结构。 2.你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。 参与者: 1.Component 为组合中的对象声明接口。 在适当的情况下,实现所有类共有接口的缺省行为。原创 2013-02-05 18:48:37 · 761 阅读 · 0 评论 -
适配器模式
概述: 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适用性: 1.你想使用一个已经存在的类,而它的接口不符合你的需求。 2.你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口 可能不一定兼容的类)协同工作。 3.(仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可原创 2013-01-31 15:34:28 · 558 阅读 · 0 评论 -
原型模式
概述: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 适用性: 1.当一个系统应该独立于它的产品创建、构成和表示时。 2.当要实例化的类是在运行时刻指定时,例如,通过动态装载。 3.为了避免创建一个与产品类层次平行的工厂类层次时。 4.当一个类的实例只能有几个不同状态组合中的一种时。 建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更原创 2013-01-28 10:12:27 · 509 阅读 · 0 评论 -
单态模式
概述: 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 适用性: 1.当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。 2.当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。 参与者: Singleton 定义一个Instance操作,允许客户访问它的唯一实例。Instance是一个类操作。原创 2013-01-28 08:38:43 · 607 阅读 · 0 评论 -
工厂方法
概述: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。 适用性: 1.当一个类不知道它所必须创建的对象的类的时候。 2.当一个类希望由它的子类来指定它所创建的对象的时候。 3.当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。 参与者: 1原创 2013-01-10 09:53:28 · 699 阅读 · 0 评论 -
建造者模式
概述: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 适用性: 1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 2.当构造过程必须允许被构造的对象有不同的表示时。 参与者: 1.Builder 为创建一个Product对象的各个部件指定抽象接口。 2.ConcreteBuilder 实现Builder的接口以构造和原创 2013-01-24 20:19:30 · 654 阅读 · 0 评论 -
代理模式
概述: 为其他对象提供一种代理以控制对这个对象的访问。 适用性: 1.远程代理(RemoteProxy)为一个对象在不同的地址空间提供局部代表。 2.虚代理(VirtualProxy)根据需要创建开销很大的对象。 3.保护代理(ProtectionProxy)控制对原始对象的访问。 4.智能指引(SmartReference)取代了简单的指针,它在访问对象时执行一些附加操作原创 2013-02-18 11:16:53 · 802 阅读 · 0 评论