GOF设计模式类图复习_第1页
GOF设计模式类图复习_第2页
GOF设计模式类图复习_第3页
GOF设计模式类图复习_第4页
GOF设计模式类图复习_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件设计模式复习软件设计模式复习面向对象思想面向对象思想object-orientedthought面向对象设计面向对象设计object-oriented design重用方式:继承、聚合、依赖重用方式:继承、聚合、依赖问:为什么要优先使用聚合少用继承?问:为什么要优先使用聚合少用继承?理解:高内聚低耦合理解:高内聚低耦合1. Simple FactoryFactory design patternMyClass createObjectOfRequiredClass(): RequiredClass create objectRequiredClassClientRequiredClass

2、instanceOfRequiredClass = MyClass.getInstanceOfRequiredClass(); 问:什么是设计模式?问:什么是设计模式? 问:使用静态方法问:使用静态方法static method定义一个简单工厂?定义一个简单工厂?创建型模式创建型模式2.Factory method工厂方法(工厂方法(FactoryMethod)模式是类的创建模式,其用意是定义一个创建产品)模式是类的创建模式,其用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类。对象的工厂接口,将实际创建工作推迟到子类。ProductConcreteProductCreatorCo

3、ncreteCreatorfactoryMethod()anOperaton()factoryMethod()创建型模式创建型模式问:为什么工厂方法比简单工厂的扩展性好?问:为什么工厂方法比简单工厂的扩展性好?ConcreteCreatorfactoryMethod()3.Singleton确保一个类只有一个确切的实例,在整个应用程序中都是可访问的。确保一个类只有一个确切的实例,在整个应用程序中都是可访问的。Singleton Design PatternMyClass getSingletonOfMyClass(): MyClass Client1singletonOfMyClassstat

4、icEnsure a class only has one instance, and provide a global point of access to it.创建型模式创建型模式问:你会定义一个单态类?单态对象需要自己的属性和方法呢?问:你会定义一个单态类?单态对象需要自己的属性和方法呢?4.Abstract FactoryAbstractFactorycreateProductA()createProductB()ConcreteFactory1ConcreteFactory2createProductA()createProductB()createProductA()create

5、ProductB()ClientAbstractProductAAbstractProductBProductA2ProductA1ProductB2ProductB1对象族对象族(产品家族产品家族)抽象工厂抽象工厂产品等级结构产品等级结构工厂方法工厂方法客户就从具体的产品中被解耦接口创建型模式创建型模式问:抽象工厂可以创建不同类型的产品?问:抽象工厂可以创建不同类型的产品?5.Builder Directorconstruct()For all objects inconstruct() builder.buildPart()BuilderbuildPart()getResult()Conc

6、reteBuilderbuildPart()getResult()Product为创建一个为创建一个Product对象的各个部件对象的各个部件指定抽象接口指定抽象接口实现实现Builder的接口以构造和装配改产品的各个部件的接口以构造和装配改产品的各个部件定义并明确它所创建的表示定义并明确它所创建的表示提供一个检索产品的接口提供一个检索产品的接口getResult构造一个使用构造一个使用Builder接口的对象接口的对象被构造的复杂对象被构造的复杂对象生成器生成器导向器导向器-builder: Builder 创建型模式创建型模式问:导向器的作用?问:导向器的作用?问:问:getResult(

7、)作用?作用?clientTargetrequest()AdapteespecificRequest()Adapterrequest()implementationspecificRequest()定义定义Client使用的与特定领域相关的接口使用的与特定领域相关的接口定义一个已经存在的接口,这个接口需要适配定义一个已经存在的接口,这个接口需要适配对对Adaptee的接口与的接口与Target接口进行适配接口进行适配特定需求特定需求inheritance6.Adapter结构型模式结构型模式问:类适配器和对象适配器的适用性?7.Bridge ClientAbstractionoperation

8、()RefinedAbstractionimp.operationImp()ImplementoroperationImp()ConcreteImplementorAConcreteImplementorBoperationImp()operationImp()imp定义抽象类的接口定义抽象类的接口维护一个指向维护一个指向Implementor类型对象的引用类型对象的引用定义实现类的接口,该接口与定义实现类的接口,该接口与Abstraction的接口可以的接口可以完全不同。完全不同。Implementor接口仅提供基本操作。接口仅提供基本操作。实现实现Implementor接口并定义它的具体实

9、现接口并定义它的具体实现被提炼的抽象实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间的耦合。Handle Body结构型模式结构型模式1.Bridge模式的别名:Handle-Body请在桥接模式结构图上标出Handle(柄柄)和Body(主体主体)。4分2.什么是桥接模式?4分 3.采用继承也能满足客户需求,为什么效果没有桥接模式好?4分Componentoperation()add(Component)remove(Component)getChild( )ClientCompositeoperation()add(Component

10、)remove(Component)getChild( )Leafoperation()children1.n-为组合中的对象声明接口为组合中的对象声明接口-声明一个接口用于访问和管理声明一个接口用于访问和管理Component 的子组件的子组件-在组合中表示叶结点对象,叶结点没有子结点在组合中表示叶结点对象,叶结点没有子结点-在组合中定义图元对象的行为在组合中定义图元对象的行为定义有子部件的那些部件的行为定义有子部件的那些部件的行为存储子部件存储子部件在在Component接口中实现与子接口中实现与子部件有关的操作部件有关的操作通过通过Component接口操纵组合部件的对象接口操纵组合部件

11、的对象8.Composite结构型模式结构型模式9.DecoratorComponentoperation()ConcreteComponentoperation()Decoratoroperation()ConcreteDecoratorAoperation()addedState()ConcreteDecoratorBoperation()Componentcomponent.operation()operation():DecoratoraddedBehavior()addedBehavior()不必修改具体组件!不必修改具体组件!结构型模式结构型模式10.Faade ClientACl

12、ientBClientCFacadeSubsystem Classes该类包含子系统中全部或部分类的实例引用。子系统只能有一个外观吗?子系统只能有一个外观吗?结构型模式结构型模式迪米特法则迪米特法则11.ProxySubject+request()Proxy+request()RealSubject+request()ClientrealSubjectrealSubject.request()结构型模式结构型模式了解了解ORB-JavaRMIFlyweightFactory-hashMap:HashMap+getFlyweight(Stringkey):FlyweightFlyweightge

13、tFlyweight(Stringkey)if(hashMap.contains(key)returnhashMap.get(key);elseFlyweightft=newConcreteFlyweight();/?hashMap.put(key,ft);returnft;Flyweight+operation(intextrinsicState)ConcreteFlyweight+operation(intextrinsicState)UnsharedConcreteFlyweight+operation(intextrinsicState)+add()-flyweights12.Flyw

14、eight(享元模式享元模式)-ConcreteFlyweight()String类型就使用了享元模式类型就使用了享元模式复合享元模式复合享元模式单纯享元模式单纯享元模式-hashMapHashMap内蕴状态内蕴状态(Internal State)外蕴状态外蕴状态(External State)享元对象的外蕴状态必须由客户端保存,并在享元对象被创建之后,在需要使用的时候再传入到享元对象内部。请将下列结构型模式和描述配对:请将下列结构型模式和描述配对:装饰者装饰者包装另一个对象,并提供不同接口。包装另一个对象,并提供不同接口。包装另一个对象,并提供额外的行为。包装另一个对象,并提供额外的行为。包

15、装另一个对象,并控制他的访问。包装另一个对象,并控制他的访问。包装许多对象以简化它们的接口。包装许多对象以简化它们的接口。包装另一个对象,并提供相同接口。包装另一个对象,并提供相同接口。外观外观代理代理适配器适配器组合组合模式模式描述描述13.IteratorClientAggregatecreateIterator()Iteratorfirst()next()isDone()currentItem()ConcreteAggregatecreateIterator()ConcreteIterator行为型模式行为型模式要求:能够迭代集合中的元素。要求:能够迭代集合中的元素。AbstractCl

16、ass+templateMathod()#abstractMethod()#hookMethod()-concreteMethod()abstractMethod()hookMethod()concreteMethod()ConcreteClass1+abstractMethod()+hookMethod()ConcreteClass2primitiveOperation()14.TemplateMathod行为型模式行为型模式Subjectattach(Observer)detach(Observer)notify()ConcreteSubjectsubjectStategetState()

17、setState()return subjectStateObserverupdate()ConcreteObserverobserverStateupdate()subjectobservers目标目标具体目标具体目标观察者观察者具体观察者具体观察者可以有任意多的观察者观察可以有任意多的观察者观察同一目标。同一目标。提供注册和删除观察者对象提供注册和删除观察者对象接口。接口。为那些在目标为那些在目标发生改变时需发生改变时需获得通知的对获得通知的对象定义一个更象定义一个更新接口新接口当具体目标对象的状态发生当具体目标对象的状态发生改变时,向各个观察者发出通知改变时,向各个观察者发出通知存储有关

18、状态,这些状态应与存储有关状态,这些状态应与目标的状态保持一致目标的状态保持一致15.Observer行为型模式行为型模式ClientHandlerhandleRequest()successorConcreteHandler1ConcreteHandler2handleRequest()handleRequest()一个典型的对象结构可能如下图所示:一个典型的对象结构可能如下图所示:aClientaHandleraConcreteHandleraConcreteHandlersuccessorsuccessor定义一个处理请求的接口。定义一个处理请求的接口。实现后继链。实现后继链。处理它所负

19、责的请求。处理它所负责的请求。可访问它的后继者。可访问它的后继者。如果可处理该请求,就处理之如果可处理该请求,就处理之否则将该请求转发给它的后继者。否则将该请求转发给它的后继者。16. Chain of Responsibility行为型模式行为型模式MediatorColleague - mediatorConcreteMediatorConcreteColleague1ConcreteColleague2中介者定义一个接口用于与各同事中介者定义一个接口用于与各同事(Colleague)对象通信。对象通信。 具体中介者通过协调各同事对象实现协作行为。具体中介者通过协调各同事对象实现协作行为。 每一个同事类都知道它的中介者对象。每一个同事类都知道它的中介者对象。 每一个同事对象在需与其他的同事通信的时候,每一个同事对象在需与其他的同事通信的时候,仅仅与它的中介者通信。仅仅与它的中介者通信。 Colleague (Mediator mediator)-17.Mediator行为型模式行为型模式迪米特法则迪米特法则Contextstate: State+request( ):v

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论