23常用设计模式的UML.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《23常用设计模式的UML.pdf》由会员分享,可在线阅读,更多相关《23常用设计模式的UML.pdf(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、FactoryFactory 模式模式1.简单工厂模式,又称静态工厂模式Creator+factory():ProductConcreteProductProduct2.工厂方法模式Creator+factory():ProductConcreteProduct1ProductConcreteProduct2ConcreteCreator1+factory():ProductConcreteCreator2+factory():Product3.抽象工厂模式抽象工厂模式与工厂方法模式的最大区别在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则需要面对多个产品等级结构。Creator+
2、factoryA():ProductA+factoryB():ProductBProductA1ProductAProductA2ConcreteCreator1+factoryA():ProductA+factoryB():ProductBConcreteCreator2+factoryA():ProductA+factoryB():ProductBProductBProductB1ProductB2SingletonSingleton 模式模式要点:类只能有一个实例必须自行创建这个实例必须自行向外界提供这个实例BuilderBuilder 模式模式Builder 模式利用一个 Direct
3、or 对象和 ConcreteBuilder 对象一个一个地建造出所有的零件,从而建造出完整的 Product。Builder 模式将产品的结构和产品的零件建造过程对客户端隐藏起来,把对建造过程进行指挥的责任和具体的建造者零件的责任分割开来,达到责任划分和封装的目的。Director-builder:Builder+Director()+construct():voidBuilder+buildPart1():void+buildPart2():void+getResult():ProductConcreteBuilder+buildPart1():void+buildPart2():void
4、+getResult():ProductProduct1public void construct()builder=new ConcreteBuilder();builder.buildPart1();builder.buildPart2();builder.getResult();/other codeProduct使用Builder 模式的场合:需要生成的产品对象有复杂的内部结构。每一个内部成分本身可以是对象,也可以紧紧是产品对象的一个组成部分。需要生成的产品对象的属性相互以来。Builder 模式可以强制实行一种分步骤进行的建造过程,因此,如果产品对象的一个属性必须在另一个属性被赋值之
5、后才可以被赋值,使用建造模式便是一个很好的设计思想。在对象创建过程中会使用到系统中的其他一些对象,这些对象在产品对象的创建过程中不易得到。PrototypePrototype 模式模式通过给出一个原型对象来指明所要创建的对象的类型,然后用赋值这个原型对象的办法创建出更多同类型的对象。Client+Operation()Prototype+clone():ObjectCloneableConcretePrototype1+clone():ObjectConcretePrototype2+clone():Objectp=prototype.clone();AdapterAdapter 模式模式把一
6、个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作,也就是说把接口不同而功能相同或相近的多个接口加以转换。1.类的Adapter 模式的结构Target+operationA()+operationB()Adaptee+operationA()Adapter+operationB()operationA()已经存在的接口(),即需要适配的接口期待得到的接口,即operationA()operationB()和2.对象的Adapter 模式的结构Target+operationA()+operationB()Adaptee+operationA
7、()Adapter-adaptee:Adaptee+Adapter(:Adaptee)+operationA()+operationB()operationA()已经存在的接口(),即需要适配的接口期待得到的接口,即operationA()operationB()和注意两种结构的区别:主要就是 Adaptee 和 Adapter 的关系,一个为继承关系,一个为依赖关系。使用Adapter 模式的场合:系统需要使用现在的类,而此类的接口不符合系统的需要。想要建立一个可以重复使用的类,用语与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。这些源类不一定有很复杂的接口。(对对象
8、的 Adapter 模式而言)在设计里,需要改变多个已有的子类的接口,如果使用类的Adapter 模式,就要针对每一个子类做一个 Adapter类,而这不太实际。CompositeComposite 模式模式把部分和整体的关系用树结构表示出来。Composite 模式使得客户端把一个个单独的成分对象和由他们符合而成的合成对象同等看待。1.安全式的Composite 模式Component+getCom posite():Com posite+operation():voidLeaf+getCom posite():Com posite+operation():voidComposite-com
9、 ponents:List+getCom posite():Com posite+operation():void+add():void+rem ove():void+com ponents():List0.*2.透明式的Composite 模式Component+getCom posite():Com posite+operation():void+com ponents():List+add():void+rem ove():voidLeaf+getCom posite():Com posite+operation():void+add():void+rem ove():void+com
10、ponents():ListComposite-com ponents:List+getCom posite():Com posite+operation():void+add():void+rem ove():void+com ponents():List.*0.*0DecoratorDecorator 模式模式此模式又称Wrapper 模式。是以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。Component+operation():voidComcreteComponent+operation():voidDecorator+com ponent:Com ponent+De
11、corator()+Decorator(:Com ponent)+operation():voidpublic void operation()com ponent.operation();ComcreteDecoratorA-AddedState+operation():voidComcreteDecoratorB+operation():void+addBehavior()public void operation()super.operation();/在此或者其他地方添加行为,Com ponent以扩展 addBehavior();在以下情况下Decorator 模式:需要扩展一个类的
12、功能,或给一个类增加附加责任。需要动态地给一个对象增加功能,这些功能可以再动态的撤销。需要增加由一些基本功能的排列组合个数的功能,从而使继承关系变得不现实。Decorator 模式的简化1.没有抽象的DecoratorComponent+operation():voidComcreteComponent+operation():voidComcreteDecorator-com ponent:Com ponent+Com creteDecorator()+operation():void2.没有抽象接口ComponentComcreteComponent+operation():voidDec
13、orator+com ponent:Com ponent+Decorator()+Decorator()+operation():voidComcreteDecorator+operation():voidProxyProxy 模式模式Proxy 模式是给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。Subject+request():voidProxySubject+realSubject:RealSubject+ProxySubject()+request():void+preRequest()+postRequest()RealSubject+RealSubject()+r
14、equest()Clientpublic void request()preRequest();realSubject.request();postRequest();FlyweightFlyweight 模式模式Flyweight 模式以共享的方式高效地支持大量的细粒度对象。Flyweight 对象能做到共享的关键是区分内部状态(Internal state)和外部状态(External state)。内部状态是存储在Flyweight 对象内部的,并且是不会随环境改变而有所不同的。因此,一个Flyweight 可以具有内部状态并可以共享。外部状态是随环境改变而改变的、不可以共享的状态。Fl
15、yweight 对象的外部状态必须有客户端保存,并在 Flyweight 对象被创建之后,在需要使用的时候再传入到 Flyweight对象内部。外部状态不可以影响Flyweight 对象的内部状态。它们是相互独立的。1.单纯Flyweight 模式的结构ClientFlyweightFactory+files:HashMap+FlyweightFactory()+getFlyweight(internal state):FlyweightFlyweight+operation(external state):voidConcreteFlyweight+internal state+Concre
16、teFlyweight(internal state)+operation(external state):voidConcreteFlyweight内部状态在建立对象的时候就已经赋值,以后不会再改变了。所有的外部状态都存储在客户端,在使用Flayweight时有客户端传进对象。public Flyweight getFlyweight(internal state)if(files.containsKey(internal state)return(Flyweight)files.get(internal state);else Flyweight fly=new ConcreteFlywe
17、ight(internal state);files.put(internal state,fly);return fly;2.复合Flyweight 模式的结构ClientFlyweightFactory+files:HashMap+FlyweightFactory()+getFlyweight(internal state):Flyweight+getCom pisteFlyweight(internal state):Flyweight集Flyweight+operation(external state):voidConcreteFlyweight+internal state+Con
18、creteFlyweight(internal state)+operation(external state):voidConcreteCompisteFlyweight+files:HashMap+ConcreteCom pisteFlyweight()+operation(external state):void+add(interanl state,Flyweight):voidpublic Flyweight getCom pisteFlyweight(List states)ConcreteCom pisteFlyweight ccf=new ConcreteCom pisteFl
19、yweight();for(internal states)循环 ccf.addstatesi,getFlyweightstatesi);return ccf;在以下所有的条件满足时,可以考虑使用 Flyweight 模式:一个系统有大量的对象。这些对象耗费大量的内存。这些对象的状态中的大部分都可以外部化。这些对象可以按照内部状态分成很多的组,当把外部对象从对象中删除时,每一个组都可以仅用一个对象代替。软件系统不依赖于这些对象的身份,换言之,这些对象可以是不可分辨的。FacadeFacade 模式模式外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是Faade模式。在
20、以下情况下可以使用Facade模式:为一个复杂子系统提供一个简单接口子系统往往因为不断演化而变得越来越复杂,使用Facade 模式可以使得子系统更具有可复用性。子系统的独立性一般而言,子系统和其他子系统之间、客户端和实现化层之间存在着很大的依赖性。引入 Facade 模式将一个子系统与它的客户端以及其他的子系统分离,可以提高子系统的独立性和可移植性。层次化结构在构建一个层次化的系统时,可以使用 Facade 模式定义系统中每一层的入口。如果层与层之间是相互依赖的,则可以限定它们仅通过 Facade 模式进行通信,从而简化层与层之间的依赖关系。BridgeBridge 模式模式Bridge模式的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 23 常用 设计 模式 UML
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内