java設(shè)計模式期末整理_第1頁
java設(shè)計模式期末整理_第2頁
java設(shè)計模式期末整理_第3頁
java設(shè)計模式期末整理_第4頁
java設(shè)計模式期末整理_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第4章 命令模式命令模式:將一個請求封裝為一個對象,從而使用戶可用不同得請求對客戶進行參數(shù)化,對請求排隊或記錄請求日志,以及支持可撤銷的操作(在命令模式中,當(dāng)一個對象請求另外一個對象調(diào)用其方法時,不和被請求的對象直接打交道,而是把這種請求封裝到一個稱為“命令”的對象中,其封裝手段是將“請求”封裝在一個命令對象的一個方法中,命令模式的核心就是使用命令對象來方法調(diào)用。)命令模式的四個角色:接收者(Receiver):接收者是一個類的實例,負責(zé)執(zhí)行與請求相關(guān)的操作命令接口(Command):命令是一個接口,規(guī)定了用來封裝“請求”的若干個方法。如execute ()、undo()。 具體命令(Conc

2、reteCommand):是實現(xiàn)命令接口的實例請求者(Invoke):是一個包含Command接口變量的類的實現(xiàn) interfaceCommand+execute():voidInvokecommand:Command+executeCommand():voidReceivercommand:Command+action():voidConcreteCommandReceiver:Receiver+execute():void單向關(guān)聯(lián)命令模式的優(yōu)點:1:請求者不與接收者直接交互聯(lián)系(即請求者不包含接收者的引用),他們之間無耦合關(guān)系2:滿足開閉原則。如在增加新的具體命令和接收者時,不必修改請求者

3、的代碼,反之在增加新的請求者時,也不必修改具體命令和接收者的代碼3:由于請求者的請求被封裝到了具體命令中,這個命令在需要時可重復(fù)使用,使用命令模式可以記錄日志4:使用命令模式可以是“請求”排隊,因此可以按一定的順序執(zhí)行這些命令第五章 觀察者模式觀察者模式:定義對象間一對多的依賴關(guān)系,當(dāng)一個對象的狀態(tài)發(fā)生變化時,所有依賴它的對象都得到通知并自動更新。(觀察者模式是關(guān)于多個對象想知道一個對象中數(shù)據(jù)變化情況的一種成熟模式。觀察者模式中有一個稱為“主題”的對象和多個稱作“觀察者”的對象,“主題”和“觀察者”間是一種一對多的依賴關(guān)系,當(dāng)“主題”發(fā)生變化時,所有的“觀察者”得到通知。)觀察者模式中的四個角

4、色:主題(Subject):主題是一個接口,該接口規(guī)定了具體主題需要實現(xiàn)的方法,如添加,刪除觀察者及通知觀察者更新數(shù)據(jù)的方法。觀察者(Observer):觀察者是一個接口,該接口規(guī)定了具體觀察者用來更新數(shù)據(jù)的方法具體主題(ConcreteSubject):是實現(xiàn)主題接口的一個實例。具體觀察者(ConcreteObserver):具體觀察者是實現(xiàn)觀察者接口的一個實例。interfaceObserver+update():voidinterfaceSubject+addObserver():void-deleteObserver():void+notifyObserver():voidConcre

5、teSubject+addObserver():void-deleteObserver():void+notifyObserver():voidotherMethod();voidConcreteObserversubject:Subject+update():void觀察者模式的優(yōu)點:1:具體主題和具體觀察者是松耦合關(guān)系,由于主題接口僅僅依賴于觀察者的接口,因此具體主題只知道她的觀察者是實現(xiàn)觀察者接口的某個類的實例,但不需要知道是具體的那個類2:滿足開閉原則。第6章 裝飾模式裝飾模式(包裝器):動態(tài)的給對象添加一些額外的職責(zé)就功能來說裝飾模式相比生成子類更為靈活(裝飾模式是動態(tài)的擴展一個對象

6、的功能,而不是改變原始類代碼的一種成熟模式)裝飾模式中的四個角色:1:抽象組件(Component):是一個抽象類,定義了“被裝飾者”需要進行的“裝飾”方法2:具體組件(ConcreteComponent):具體組件是抽象組件的一個子類,具體組件的實例是“被裝飾者”3:裝飾(Decorator):裝飾也是抽象組件的一個子類,但裝飾還包含一個抽象組件聲明的變量以保存“被裝飾者”的引用,裝飾者可以使一個抽象類,也可以是一個非抽象類。如果是非抽象類,那么該類的實例稱作“裝飾者”4:具體裝飾(ConcreteDecorate):具體裝飾是裝飾的一個非抽象子類,具體裝飾的實例稱作“裝飾者”Compone

7、nt+methodOne():void+methodTwo():voidConcreteDecorateA+methodOne():void+methodTwo():void+otherMethod():voidConcreteComponent+methodOne():void+methodTwo():voidDecoatorcomponent:Component+methodOne():void+methodTwo():voidConcreteDecorateB+methodOne():void+methodTwo():void+otherMethod():void裝飾模式的優(yōu)點:1:被裝

8、飾者和裝飾者是松耦合關(guān)系。由于裝飾者僅僅依賴于抽象組件,因此具體裝飾只知道它要裝飾的對象是抽象組件的一個子類的實例,但不必知道是哪一個具體子類2:滿足開閉原則3:可以使用多個具體裝飾來裝飾具體組件的實例第8章 適配器模式適配器模式:將一個類的接口轉(zhuǎn)成客戶希望的另外一個接口的成熟模式。(該模式中涉及有目標(biāo),被適配者和適配器。適配器模式的關(guān)鍵是建立一個適配器,這個適配器實現(xiàn)了目標(biāo)接口并包含有被適配者的引用)適配器模式中的三種角色:1:目標(biāo)(Traget):目標(biāo)是一個接口,該接口是用戶想使用的接口2:被適配者(Adaptee):是一個已經(jīng)存在的接口或抽象類,這個抽象類或接口需要適配3:適配器(Ada

9、pter):適配器是一個類,該類實現(xiàn)了目標(biāo)接口并包含了被是陪者的引用,即適配器的作用是對被適配者接口和目標(biāo)接口進行適配interfaceAmethodA():voidinterfaceBmethodB():voidAdapterAb:BmethodA():voidThinkmethodB():void適配器模式的有點:1:目標(biāo)和被適配者是完全解耦關(guān)系2:滿足開閉原則。當(dāng)添加一個實現(xiàn)Adaptee接口的新類時,不必修改Adapter,Adapter就能對這個新類的實例進行適配第9章 責(zé)任鏈模式責(zé)任鏈模式:使用多個對象都有機會處理請求,從而避免請求的發(fā)送者和接收者之間的耦合關(guān)系,將這些對象連成一條

10、鏈,沿著這條鏈傳遞請求,知道有一個對象能夠處理這個請求為止。(責(zé)任鏈模式的關(guān)鍵是將用戶的請求依次分派給許多對象,這些對象組織成一個責(zé)任鏈,每個對象都含有對后繼對象的引用。并要求責(zé)任鏈上的每個對象,如能才處理用戶的請求,就做出處理,不能傳遞給下一個對象。若不能處理,就必須將用戶的請求傳遞給下一個對象)責(zé)任鏈模式的兩個角色:1:處理者(Handler):處理者是一個接口,負責(zé)規(guī)定具體處理者處理用戶請求的方法,以及具體處理者設(shè)置猴急對象的方法。2:具體處理者(ConcreteHandler):是實現(xiàn)處理者接口的類的實例ConcreteHandlerA+handlerRequest():void+se

11、tNexthandler(handler):voidinterfaceHandler+handlerRequest():void+setNexthandler(handler):voidConcreteHandlerB+handlerRequest():void+setNexthandler(handler):void責(zé)任鏈模式的優(yōu)點:1:責(zé)任鏈中的對象只和自己的后繼是低耦合關(guān)系,和其它對象毫無關(guān)聯(lián)2:在處理這種分配職責(zé)時,責(zé)任鏈給應(yīng)用程序更多的靈活性3:應(yīng)用程序可以動態(tài)地增加、刪除處理者或重新指派處理者的職責(zé)4:應(yīng)用程序可以動態(tài)的改變處理者之間的順序5:使用責(zé)任鏈的用戶不必知道處理者的信息,

12、用戶不會只帶具體是哪一個對象處理了他的請求第10章 外觀模式外觀模式:為系統(tǒng)中的一組接口提供一個一至的界面,F(xiàn)acade模式定義了一個高層接口,這以接口使得這一子系統(tǒng)更加容易使用(外觀模式是簡化用戶和子系統(tǒng)進行交互的成熟模式,外觀模式的關(guān)鍵是為子系統(tǒng)提供一個成為外觀的類,該外觀類的實例負責(zé)和子系統(tǒng)中類的實例打交道)外觀模式的兩種角色:1:子系統(tǒng)(Subsystem):子系統(tǒng)是若干個類的集合,這些類的實例協(xié)同合作,為用戶提供所需要的功能,子系統(tǒng)中任何類都不包含外觀類的實例引用。2:外觀(Facade):外觀是一個類,該類包含子系統(tǒng)中全部或部分類實例的引用,當(dāng)用戶想要和子系統(tǒng)中若干個類的實例打交道

13、時,可以代替地和子系統(tǒng)的外觀類實例打交道FacadeA:ClassAB:ClassBC:classCClassA+methodA():voidclassB+methodB():stringclassC+methodC():bool外觀模式的優(yōu)點:1:使客戶與子系統(tǒng)無耦合,并且使子系統(tǒng)使用起來更加方便2:外觀只是提供一個更加簡潔的界面,并不影響用戶直接使用子系統(tǒng)中的類,3:子系統(tǒng)中任何類對其方法的內(nèi)容進行修改,不影響外觀類的代碼第12章 中介者模式中介者模式:用一個中介對象來封裝一系列的對象交互,中介者使各對象不需要顯示地相互應(yīng)用,從而使其耦合松散,而且可以獨立地改變他們之間的交互。中介者模式的

14、四種角色:1:中介者(Mediator):是一個接口,具體中介者接口定義了用于同事對象之間進行通信的方法。2:具體中介者(ConcreteMediator):具體中介者是實現(xiàn)中介者接口的類,具體中介者需要包含所有具體同事的引用,同過實現(xiàn)中介者接口中的方法來滿足具體同事之間的通信請求。3:同事(Colleague):是一個接口,定義了具體同事需要實現(xiàn)的方法。4:具體同事(ConcreteColleague):實現(xiàn)同事接口的類,具體同事需要包含具體中介者的引用,一個具體同事需要和其它具體同事交互時,只需將自己的請求通知它所包含的具體中介者即可interfaceColleagueinterfaceM

15、ediatorConcreteMediatorA:ConcreteColleagueAB:ConcreteColleagueBConcreteColleagueAC:ConcreteMediatorConcreteColleagueBC:ConcreteMediator中介者模式的有點:1:可以避免許多的對象為了之間的通信而相互顯示的引用,否則,不僅系統(tǒng)難于維護,而且使其它系統(tǒng)也難以復(fù)用這些對象2:中介者可以將原本分布于多個對象之間的交互幾集中在一起。3:具體中介者使得具體同事之間完全解耦4:具體中介者集中了同事之間如何交互的細節(jié),使系統(tǒng)比較清楚地知道整個系統(tǒng)中的同事之間是如何交互的5:當(dāng)一些

16、對象想和別的對象交互但又無法包含對方的引用時,此時中介者模式就可以使這些對象相互通信第14章 抽象工廠模式抽象工廠模式(配套):提供一個創(chuàng)建一系列或相互依賴的對象的接口,而無需指定他們具體的類抽象工廠方法模式的四種角色:1:抽象產(chǎn)品(product):一個抽象類或接口,負責(zé)定義具體產(chǎn)品必須實現(xiàn)的方法2:具體產(chǎn)品(ConcreteProduct):是一個類。若抽象產(chǎn)品是一個接口,那么具體產(chǎn)品是實現(xiàn)product接口的一個類,若抽象產(chǎn)品是一個抽象類,那么具體產(chǎn)品是product的子類。3:抽象工廠(AbstractFactory):一個接口或抽象類,負責(zé)定義若干個抽象方法。4:具體工廠(Concr

17、eteFactory):productAAbstractFactory+createProductA():ProductA+createProductB():ProductBProductA1ProductA2ConcreteFactory1+createProductA():ProductA+createProductB():ProductBConcreteFactory2+createProductA():ProductA+createProductB():ProductBproductBProductB2ProductB1抽象工廠模式的優(yōu)點:1:其可以為用戶創(chuàng)建一系列相關(guān)的對象,使用戶和

18、創(chuàng)建這些類的對象脫耦2:可以方便用戶創(chuàng)建一系列對象,用戶使用不同的具體工廠就能得到一組相關(guān)的對象,同時也能避免用戶混用不同系列中的對象3:可以隨時增加“具體工廠”為用戶提供一組相關(guān)的對象第17章 單件模式單件模式:保證一個類只有一個實例,并提供一個訪問它的全局訪問點(單件模式是一個關(guān)于怎樣設(shè)計一個類,并使該類只有一個實例的成熟模式,該模式的關(guān)鍵是將類的構(gòu)造方法設(shè)置為private權(quán)限,并提供一個返回它的唯一實例的類方法(static方法)單件模式的角色:單件模式只有一個角色,就是單件類(Singleton),單件類只可以創(chuàng)建出一個實例單件模式的特點:1:單件類包含用自身聲明的類變量,這個類變量是這個單件類的唯一實例2:單件類的構(gòu)造方法的權(quán)限時候private。3:單件類負責(zé)創(chuàng)建自己唯一的實例。并提供訪問該實例的類方法Singleton-uniqueInstence:Singleton+getInstence():Singleton單件類的優(yōu)點:單件類的唯一實例是有單件類控制,所以可以很好的控制用戶何時訪問它。第二十四章 訪問者模式訪問者模式:表示一個作用于某個對象結(jié)構(gòu)中的各個元素的操作,它可以在不改變個元素得類的前提下定義作用于這些元素的新操作。訪問這模式的五種角色:1:抽象元素(Element):一個抽象類,該類定義了接受

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論