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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

6、的功能,而不是改變?cè)碱惔a的一種成熟模式)裝飾模式中的四個(gè)角色:1:抽象組件(Component):是一個(gè)抽象類,定義了“被裝飾者”需要進(jìn)行的“裝飾”方法2:具體組件(ConcreteComponent):具體組件是抽象組件的一個(gè)子類,具體組件的實(shí)例是“被裝飾者”3:裝飾(Decorator):裝飾也是抽象組件的一個(gè)子類,但裝飾還包含一個(gè)抽象組件聲明的變量以保存“被裝飾者”的引用,裝飾者可以使一個(gè)抽象類,也可以是一個(gè)非抽象類。如果是非抽象類,那么該類的實(shí)例稱作“裝飾者”4:具體裝飾(ConcreteDecorate):具體裝飾是裝飾的一個(gè)非抽象子類,具體裝飾的實(shí)例稱作“裝飾者”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)點(diǎn):1:被裝

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

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

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

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

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

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

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

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

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

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

18、創(chuàng)建這些類的對(duì)象脫耦2:可以方便用戶創(chuàng)建一系列對(duì)象,用戶使用不同的具體工廠就能得到一組相關(guān)的對(duì)象,同時(shí)也能避免用戶混用不同系列中的對(duì)象3:可以隨時(shí)增加“具體工廠”為用戶提供一組相關(guān)的對(duì)象第17章 單件模式單件模式:保證一個(gè)類只有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)(單件模式是一個(gè)關(guān)于怎樣設(shè)計(jì)一個(gè)類,并使該類只有一個(gè)實(shí)例的成熟模式,該模式的關(guān)鍵是將類的構(gòu)造方法設(shè)置為private權(quán)限,并提供一個(gè)返回它的唯一實(shí)例的類方法(static方法)單件模式的角色:?jiǎn)渭J街挥幸粋€(gè)角色,就是單件類(Singleton),單件類只可以創(chuàng)建出一個(gè)實(shí)例單件模式的特點(diǎn):1:?jiǎn)渭惏米陨砺暶鞯念愖兞?,這個(gè)類變量是這個(gè)單件類的唯一實(shí)例2:?jiǎn)渭惖臉?gòu)造方法的權(quán)限時(shí)候private。3:?jiǎn)渭愗?fù)責(zé)創(chuàng)建自己唯一的實(shí)例。并提供訪問(wèn)該實(shí)例的類方法Singleton-uniqueInstence:Singleton+getInstence():Singleton單件類的優(yōu)點(diǎn):?jiǎn)渭惖奈ㄒ粚?shí)例是有單件類控制,所以可以很好的控制用戶何時(shí)訪問(wèn)它。第二十四章 訪問(wèn)者模式訪問(wèn)者模式:表示一個(gè)作用于某個(gè)對(duì)象結(jié)構(gòu)中的各個(gè)元素的操作,它可以在不改變個(gè)元素得類的前提下定義作用于這些元素的新操作。訪問(wèn)這模式的五種角色:1:抽象元素(Element):一個(gè)抽象類,該類定義了接受

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論