1、第 1 页(共 9 页)10 个经典设计模式定义及图解1、 The Strategy Pattern defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it.DecoyDuckDecoyDuck()display()FlyBehaviorfly()QuackBehaviorquack() DuckDuck()setFlyBehavior
2、()stQuackehavior()disply()performFly()rfrQuack()swim() flyBehaviorquackBehaviorFakeQuack FlyNoWayfly()FlyRocketPowerdfly()FlyWithingsfly()MalrdDuckMalrdDuck()disply()MuteQuackQuackquack() RedHeadDuckRedHeadDuck()isply() RuberDuckRuberDuck()display()Squeakquack()2、The Observer Pattern defines a one-t
3、o-many relationship between objects so that when one object changes state, all of its dependents are notified and updated automatically.0.*SubjectregisterObserver()removeObserver()notifyObserver()Observerupdate()Each subject canhave many observersupdate() will be called whenthe Subjects state change
4、s.These methods will be called When to register as observers , remove themselves from Being observers, or update allthe observers whenever state changes.For example:第 2 页(共 9 页)SubjectregisterObserver()removeObserver()notifyObserver()Observerupdate()0.*CurentConditions Displayupdate()display()Weathe
5、rDataregisterObserver()removeObserver()notifyObserver() 1DisplayElementdisplay()Statistics Displayupdate()display()Forecast Displayupdate()display()3、The Decorator Pattern attaches additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for exte
6、nding functionality.ConcreteComponentAConcreteDecoratorA ConcreteDecoratorBDecoratorComponentConcreteComponentBFor example:第 3 页(共 9 页)HouseBlendHouseBlend()cost()DarkRoastDarkRoast()cost() SteamedMilkSteamedMilk()getDescription()cost()MochaMocha()getDescription()cost()SoySoy()getDescription()cost()
7、EspresoEspreso()cost()DecafDecaf()cost()Beveragedescription : StringgetDescription()cost() CondimentsgetDescription()#baseWhipWhip()getDescription()cost()4、The Factory Method Pattern defines an interface for creating an object, but lets subclasses decide which class to instantiate. Factory Method le
8、ts a class defer instantiation to subclasses.Product CreatorfactoryMethod()otherOperation()ConcreteCreatorfactoryMethod()ConcreteProductFor example:第 4 页(共 9 页)NYFactorycreatePiza() ChicagoFactorycreatePiza()NYStyleChesePizaNYStylePeperoniPizaNYStyleClamPizaNYStyleVegiePizaChicagoStyleCheesePizaChic
9、goStylePeperoniPizaChicagoStyleClamPizaChicagoStyleVegiePizaPizaStoreorderPiza() FactorycreatePiza()5、 The Singleton Pattern ensures a class has only one instance, and provides a global point of access to it.Singletonstatic uniqueInstancestatic getInstance() Holds our one and onlyinstance of Singlet
10、on.You can conveniently accessthe method anywhere?6、The Command Pattern encapsulates a request as an object, thereby letting you parameterize other objects with different requests, queue or log requests, and support undoable operations.第 5 页(共 9 页)InvokersetComand() Comandexecute()undo()ConcreteComa
11、ndexecute()undo()Receiveraction()public void execute()receiver.action();For example:7、The Adapter Pattern converts the interface of a class into another interface the clients expect. Adapter lets classes work together that couldnt otherwise because of incompatible interfaces.第 6 页(共 9 页)Client Targe
12、trequest()Adapterrequest() AdaptespecificRequest()For example:8、The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. Faade defines a higher-level interface that makes the subsystem easier to use.第 7 页(共 9 页)Client FacadeFor example:ClientScrenTheaterLightsPopcornPop
13、erHomeTheaterFacadeTunerCdPlayerAmplifierDvdPlayerProjector9、The Template Method Pattern defines the skeleton of a algorithm in a method, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithms structure.第 8 页(共 9 页)primitiveOperation1();primitiveOperation2();For example:10、The State Pattern allows an object to alter its behavior when its internal state changes.第 9 页(共 9 页)state.handle();For example:
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。