




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、軟件設(shè)計(jì)模式復(fù)習(xí)軟件設(shè)計(jì)模式復(fù)習(xí)面向?qū)ο笏枷朊嫦驅(qū)ο笏枷雘bject-orientedthought面向?qū)ο笤O(shè)計(jì)面向?qū)ο笤O(shè)計(jì)object-oriented design重用方式:繼承、聚合、依賴重用方式:繼承、聚合、依賴問(wèn):為什么要優(yōu)先使用聚合少用繼承?問(wèn):為什么要優(yōu)先使用聚合少用繼承?理解:高內(nèi)聚低耦合理解:高內(nèi)聚低耦合1. Simple FactoryFactory design patternMyClass createObjectOfRequiredClass(): RequiredClass create objectRequiredClassClientRequiredClass
2、instanceOfRequiredClass = MyClass.getInstanceOfRequiredClass(); 問(wèn):什么是設(shè)計(jì)模式?問(wèn):什么是設(shè)計(jì)模式? 問(wèn):使用靜態(tài)方法問(wèn):使用靜態(tài)方法static method定義一個(gè)簡(jiǎn)單工廠?定義一個(gè)簡(jiǎn)單工廠?創(chuàng)建型模式創(chuàng)建型模式2.Factory method工廠方法(工廠方法(FactoryMethod)模式是類(lèi)的創(chuàng)建模式,其用意是定義一個(gè)創(chuàng)建產(chǎn)品)模式是類(lèi)的創(chuàng)建模式,其用意是定義一個(gè)創(chuàng)建產(chǎn)品對(duì)象的工廠接口,將實(shí)際創(chuàng)建工作推遲到子類(lèi)。對(duì)象的工廠接口,將實(shí)際創(chuàng)建工作推遲到子類(lèi)。ProductConcreteProductCreatorCo
3、ncreteCreatorfactoryMethod()anOperaton()factoryMethod()創(chuàng)建型模式創(chuàng)建型模式問(wèn):為什么工廠方法比簡(jiǎn)單工廠的擴(kuò)展性好?問(wèn):為什么工廠方法比簡(jiǎn)單工廠的擴(kuò)展性好?ConcreteCreatorfactoryMethod()3.Singleton確保一個(gè)類(lèi)只有一個(gè)確切的實(shí)例,在整個(gè)應(yīng)用程序中都是可訪問(wèn)的。確保一個(gè)類(lèi)只有一個(gè)確切的實(shí)例,在整個(gè)應(yīng)用程序中都是可訪問(wèn)的。Singleton Design PatternMyClass getSingletonOfMyClass(): MyClass Client1singletonOfMyClassstat
4、icEnsure a class only has one instance, and provide a global point of access to it.創(chuàng)建型模式創(chuàng)建型模式問(wèn):你會(huì)定義一個(gè)單態(tài)類(lèi)?單態(tài)對(duì)象需要自己的屬性和方法呢?問(wèn):你會(huì)定義一個(gè)單態(tài)類(lèi)?單態(tài)對(duì)象需要自己的屬性和方法呢?4.Abstract FactoryAbstractFactorycreateProductA()createProductB()ConcreteFactory1ConcreteFactory2createProductA()createProductB()createProductA()create
5、ProductB()ClientAbstractProductAAbstractProductBProductA2ProductA1ProductB2ProductB1對(duì)象族對(duì)象族(產(chǎn)品家族產(chǎn)品家族)抽象工廠抽象工廠產(chǎn)品等級(jí)結(jié)構(gòu)產(chǎn)品等級(jí)結(jié)構(gòu)工廠方法工廠方法客戶就從具體的產(chǎn)品中被解耦接口創(chuàng)建型模式創(chuàng)建型模式問(wèn):抽象工廠可以創(chuàng)建不同類(lèi)型的產(chǎn)品?問(wèn):抽象工廠可以創(chuàng)建不同類(lèi)型的產(chǎn)品?5.Builder Directorconstruct()For all objects inconstruct() builder.buildPart()BuilderbuildPart()getResult()Conc
6、reteBuilderbuildPart()getResult()Product為創(chuàng)建一個(gè)為創(chuàng)建一個(gè)Product對(duì)象的各個(gè)部件對(duì)象的各個(gè)部件指定抽象接口指定抽象接口實(shí)現(xiàn)實(shí)現(xiàn)Builder的接口以構(gòu)造和裝配改產(chǎn)品的各個(gè)部件的接口以構(gòu)造和裝配改產(chǎn)品的各個(gè)部件定義并明確它所創(chuàng)建的表示定義并明確它所創(chuàng)建的表示提供一個(gè)檢索產(chǎn)品的接口提供一個(gè)檢索產(chǎn)品的接口getResult構(gòu)造一個(gè)使用構(gòu)造一個(gè)使用Builder接口的對(duì)象接口的對(duì)象被構(gòu)造的復(fù)雜對(duì)象被構(gòu)造的復(fù)雜對(duì)象生成器生成器導(dǎo)向器導(dǎo)向器-builder: Builder 創(chuàng)建型模式創(chuàng)建型模式問(wèn):導(dǎo)向器的作用?問(wèn):導(dǎo)向器的作用?問(wèn):?jiǎn)枺篻etResult(
7、)作用?作用?clientTargetrequest()AdapteespecificRequest()Adapterrequest()implementationspecificRequest()定義定義Client使用的與特定領(lǐng)域相關(guān)的接口使用的與特定領(lǐng)域相關(guān)的接口定義一個(gè)已經(jīng)存在的接口,這個(gè)接口需要適配定義一個(gè)已經(jīng)存在的接口,這個(gè)接口需要適配對(duì)對(duì)Adaptee的接口與的接口與Target接口進(jìn)行適配接口進(jìn)行適配特定需求特定需求inheritance6.Adapter結(jié)構(gòu)型模式結(jié)構(gòu)型模式問(wèn):類(lèi)適配器和對(duì)象適配器的適用性?7.Bridge ClientAbstractionoperation
8、()RefinedAbstractionimp.operationImp()ImplementoroperationImp()ConcreteImplementorAConcreteImplementorBoperationImp()operationImp()imp定義抽象類(lèi)的接口定義抽象類(lèi)的接口維護(hù)一個(gè)指向維護(hù)一個(gè)指向Implementor類(lèi)型對(duì)象的引用類(lèi)型對(duì)象的引用定義實(shí)現(xiàn)類(lèi)的接口,該接口與定義實(shí)現(xiàn)類(lèi)的接口,該接口與Abstraction的接口可以的接口可以完全不同。完全不同。Implementor接口僅提供基本操作。接口僅提供基本操作。實(shí)現(xiàn)實(shí)現(xiàn)Implementor接口并定義它的具體實(shí)
9、現(xiàn)接口并定義它的具體實(shí)現(xiàn)被提煉的抽象實(shí)現(xiàn)系統(tǒng)可能有多角度分類(lèi),每一種分類(lèi)都有可能變化,那么就把這種多角度分離出來(lái)讓它們獨(dú)立變化,減少它們之間的耦合。Handle Body結(jié)構(gòu)型模式結(jié)構(gòu)型模式1.Bridge模式的別名:Handle-Body請(qǐng)?jiān)跇蚪幽J浇Y(jié)構(gòu)圖上標(biāo)出Handle(柄柄)和Body(主體主體)。4分2.什么是橋接模式?4分 3.采用繼承也能滿足客戶需求,為什么效果沒(méi)有橋接模式好?4分Componentoperation()add(Component)remove(Component)getChild( )ClientCompositeoperation()add(Component
10、)remove(Component)getChild( )Leafoperation()children1.n-為組合中的對(duì)象聲明接口為組合中的對(duì)象聲明接口-聲明一個(gè)接口用于訪問(wèn)和管理聲明一個(gè)接口用于訪問(wèn)和管理Component 的子組件的子組件-在組合中表示葉結(jié)點(diǎn)對(duì)象,葉結(jié)點(diǎn)沒(méi)有子結(jié)點(diǎn)在組合中表示葉結(jié)點(diǎn)對(duì)象,葉結(jié)點(diǎn)沒(méi)有子結(jié)點(diǎn)-在組合中定義圖元對(duì)象的行為在組合中定義圖元對(duì)象的行為定義有子部件的那些部件的行為定義有子部件的那些部件的行為存儲(chǔ)子部件存儲(chǔ)子部件在在Component接口中實(shí)現(xiàn)與子接口中實(shí)現(xiàn)與子部件有關(guān)的操作部件有關(guān)的操作通過(guò)通過(guò)Component接口操縱組合部件的對(duì)象接口操縱組合部件
11、的對(duì)象8.Composite結(jié)構(gòu)型模式結(jié)構(gòu)型模式9.DecoratorComponentoperation()ConcreteComponentoperation()Decoratoroperation()ConcreteDecoratorAoperation()addedState()ConcreteDecoratorBoperation()Componentcomponent.operation()operation():DecoratoraddedBehavior()addedBehavior()不必修改具體組件!不必修改具體組件!結(jié)構(gòu)型模式結(jié)構(gòu)型模式10.Faade ClientACl
12、ientBClientCFacadeSubsystem Classes該類(lèi)包含子系統(tǒng)中全部或部分類(lèi)的實(shí)例引用。子系統(tǒng)只能有一個(gè)外觀嗎?子系統(tǒng)只能有一個(gè)外觀嗎?結(jié)構(gòu)型模式結(jié)構(gòu)型模式迪米特法則迪米特法則11.ProxySubject+request()Proxy+request()RealSubject+request()ClientrealSubjectrealSubject.request()結(jié)構(gòu)型模式結(jié)構(gòu)型模式了解了解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類(lèi)型就使用了享元模式類(lèi)型就使用了享元模式復(fù)合享元模式復(fù)合享元模式單純享元模式單純享元模式-hashMapHashMap內(nèi)蘊(yùn)狀態(tài)內(nèi)蘊(yùn)狀態(tài)(Internal State)外蘊(yùn)狀態(tài)外蘊(yùn)狀態(tài)(External State)享元對(duì)象的外蘊(yùn)狀態(tài)必須由客戶端保存,并在享元對(duì)象被創(chuàng)建之后,在需要使用的時(shí)候再傳入到享元對(duì)象內(nèi)部。請(qǐng)將下列結(jié)構(gòu)型模式和描述配對(duì):請(qǐng)將下列結(jié)構(gòu)型模式和描述配對(duì):裝飾者裝飾者包裝另一個(gè)對(duì)象,并提供不同接口。包裝另一個(gè)對(duì)象,并提供不同接口。包裝另一個(gè)對(duì)象,并提供額外的行為。包裝另一個(gè)對(duì)象,并提供額外的行為。包
15、裝另一個(gè)對(duì)象,并控制他的訪問(wèn)。包裝另一個(gè)對(duì)象,并控制他的訪問(wèn)。包裝許多對(duì)象以簡(jiǎn)化它們的接口。包裝許多對(duì)象以簡(jiǎn)化它們的接口。包裝另一個(gè)對(duì)象,并提供相同接口。包裝另一個(gè)對(duì)象,并提供相同接口。外觀外觀代理代理適配器適配器組合組合模式模式描述描述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目標(biāo)目標(biāo)具體目標(biāo)具體目標(biāo)觀察者觀察者具體觀察者具體觀察者可以有任意多的觀察者觀察可以有任意多的觀察者觀察同一目標(biāo)。同一目標(biāo)。提供注冊(cè)和刪除觀察者對(duì)象提供注冊(cè)和刪除觀察者對(duì)象接口。接口。為那些在目標(biāo)為那些在目標(biāo)發(fā)生改變時(shí)需發(fā)生改變時(shí)需獲得通知的對(duì)獲得通知的對(duì)象定義一個(gè)更象定義一個(gè)更新接口新接口當(dāng)具體目標(biāo)對(duì)象的狀態(tài)發(fā)生當(dāng)具體目標(biāo)對(duì)象的狀態(tài)發(fā)生改變時(shí),向各個(gè)觀察者發(fā)出通知改變時(shí),向各個(gè)觀察者發(fā)出通知存儲(chǔ)有關(guān)
18、狀態(tài),這些狀態(tài)應(yīng)與存儲(chǔ)有關(guān)狀態(tài),這些狀態(tài)應(yīng)與目標(biāo)的狀態(tài)保持一致目標(biāo)的狀態(tài)保持一致15.Observer行為型模式行為型模式ClientHandlerhandleRequest()successorConcreteHandler1ConcreteHandler2handleRequest()handleRequest()一個(gè)典型的對(duì)象結(jié)構(gòu)可能如下圖所示:一個(gè)典型的對(duì)象結(jié)構(gòu)可能如下圖所示:aClientaHandleraConcreteHandleraConcreteHandlersuccessorsuccessor定義一個(gè)處理請(qǐng)求的接口。定義一個(gè)處理請(qǐng)求的接口。實(shí)現(xiàn)后繼鏈。實(shí)現(xiàn)后繼鏈。處理它所負(fù)
19、責(zé)的請(qǐng)求。處理它所負(fù)責(zé)的請(qǐng)求??稍L問(wèn)它的后繼者??稍L問(wèn)它的后繼者。如果可處理該請(qǐng)求,就處理之如果可處理該請(qǐng)求,就處理之否則將該請(qǐng)求轉(zhuǎn)發(fā)給它的后繼者。否則將該請(qǐng)求轉(zhuǎn)發(fā)給它的后繼者。16. Chain of Responsibility行為型模式行為型模式MediatorColleague - mediatorConcreteMediatorConcreteColleague1ConcreteColleague2中介者定義一個(gè)接口用于與各同事中介者定義一個(gè)接口用于與各同事(Colleague)對(duì)象通信。對(duì)象通信。 具體中介者通過(guò)協(xié)調(diào)各同事對(duì)象實(shí)現(xiàn)協(xié)作行為。具體中介者通過(guò)協(xié)調(diào)各同事對(duì)象實(shí)現(xiàn)協(xié)作行為。 每一個(gè)同事類(lèi)都知道它的中介者對(duì)象。每一個(gè)同事類(lèi)都知道它的中介者對(duì)象。 每一個(gè)同事對(duì)象在需與其他的同事通信的時(shí)候,每一個(gè)同事對(duì)象在需與其他的同事通信的時(shí)候,僅僅與它的中介者通信。僅僅與它的中介者通信。 Colleague (Mediator mediator)-17.Mediator行為型模式行為型模式迪米特法則迪米特法則Contextstate: State+request( ):v
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 供應(yīng)鏈質(zhì)量管理的實(shí)施策略試題及答案
- 突變與自然選擇的關(guān)系試題及答案
- 國(guó)際物流市場(chǎng)競(jìng)爭(zhēng)分析試題與答案
- 物流師考試經(jīng)歷分享試題及答案
- 細(xì)胞自噬的過(guò)程與生物學(xué)意義試題及答案
- 湖南省衡陽(yáng)市八中2025年高三沖刺模擬化學(xué)試卷含解析
- 2024年CPMM學(xué)習(xí)案例試題及答案
- SCMP考試2024年知識(shí)圖譜與試題及答案
- 針對(duì)不同背景的2024年CPMM試題及答案
- CPSM考試開(kāi)卷與閉卷對(duì)比及試題及答案
- 拉斐爾課件完整版
- EIM Book 1 Unit 8 We're going on holiday單元知識(shí)要點(diǎn)
- 機(jī)加工日語(yǔ)詞匯
- 核舟記測(cè)模擬試題及答案
- MySQL中文參考手冊(cè)MySQL學(xué)習(xí)教程
- 集群企業(yè)住所托管服務(wù)協(xié)議書(shū)
- YS/T 1028.3-2015磷酸鐵鋰化學(xué)分析方法第3部分:磷量的測(cè)定磷鉬酸喹啉稱量法
- GB/T 39305-2020再生水水質(zhì)氟、氯、亞硝酸根、硝酸根、硫酸根的測(cè)定離子色譜法
- GB/T 26159-2010中國(guó)未成年人手部尺寸分型
- GB/T 13029.3-2010船用電纜通信電纜和射頻電纜的選擇和敷設(shè)
- GB/T 10798-2001熱塑性塑料管材通用壁厚表
評(píng)論
0/150
提交評(píng)論