欢迎来到天天文库
浏览记录
ID:24331870
大小:912.44 KB
页数:27页
时间:2018-11-13
《设计模式简明手册》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、设计模式简明手册仓犍型结构型行为型类FactoryMethodAdapterClassInterpreterTeinplateMethod对象AbstractFactoryBui1derPrototypeSingletonAdapterObjectBridgeCompositeDecoratorFacadeFlyweightProxyChainofResponsibilityCoininandIteratorMediatorMementoObserverStateStrategyVisitorFactoryMethod名咏FactoryIe
2、thod意图定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。•当一个类不知道它所必须创建的对象的类的吋候。•当一个类希望由它的子类来指定它所创建的对彖的时候。•当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。AbstractFactory名称AbstractFactory结构意图提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。•一个系统要独立于它的产品的创建、坦合和表示时。适用性•—个系统要由多个产品系
3、列中的一个来配置时。•当你要强调一系列相关的产品对彖的设计以便进行联合使用时,•当你提供一个产品类库,而只想並示它们的接口而不是实现时。Builder名称Builder结构Director—►BuilderConstruclO2BoHdPartO意图将一个复荣对象的构建与它的表示分离,使得同祥的构建过程可以创建不同的表示适用性分嘅它们的親方式时◊Prototype名称Prototype结构returncopyofsellreturncopyofself意图用原型实例指定创逮对象的种类,并且通过拷贝这些原型创建新的对象。•当要实例化的类是在运
4、行时刻指定时,例如,通过动态装载I或者•为了避免创建一个与产品类层次平行的工厂类层次时;或者•当一个类的买例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。Singleton名称SingletonreturnunquelnstanceSingleton$»aticlnstance()o--SingletonOperallorX)GetSmgiotonOataOstaticumquelnslanceSMiglotooData意图保证一个类仅有一个买例,并提供一个访问它的全局访问点。
5、适用性I盡霆^苎实所偉?$?层0篇1^码就能使用一个扩展的实例时。Adapter名称Adapter意图羹識s■成客户希測外一个接口◊-讎得原本由.不兼容而不能-起工綱陛•你想使用一个己经存在的类,而它的接口不符合你的需求。•你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同适用工作。性•(仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可齡梅一个都进行子类化以匹配它们的接口。对象适配器可以运配它的父类接口。Bridge篡BridgeI将抽象部分与它的买现部分分离,使它们都可以独
6、立地变化。•你不希望在抽象和它的实现部分之间有一个固定的绑定关系。例如这种情况可能是因为,在程序运行时刻买现部分应可以被选泥鮮咔谢弧?/LI〉•类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充,这时Bridge模式使你可以对不同的抽象接口和买现部分迸行组合,并分别对它们逬行扩充。适用性•对一个抽象的实现部分的修改应对客户不产生影响,即客户的代码不必重新编译。•(C++)你想对客户充全阳酌據的实现邹分,在C++中,类的我示在类接口中是可见的,•有许多类要生成。这祥一种类层次结构说明你必须将一个对象分解成两个部分。Ruwbaugh称这种
7、类层次结构为“获套的昔化”(nestedgeneralizations)♦•你想在多个对象间共享实现(可能使用引用计数),但同时要求客户并不知道这一点。一个简单的例子便是CoP1ien^OString类[Cop92],左逢不矣申姜+对秦可以共享岗一个字特$表不(StringRep)OComposite名称Composite将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象4卩组合对象的使用心思具有一致性。•你想表示对象的部分-整体层次结构。•你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结
8、构中的所有对象,Decorator名称Decorator适用性
9、动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为炅活,•在不影响其他对象
此文档下载收益归作者所有