設(shè)計模式總結(jié)_第1頁
設(shè)計模式總結(jié)_第2頁
設(shè)計模式總結(jié)_第3頁
設(shè)計模式總結(jié)_第4頁
設(shè)計模式總結(jié)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1頁共1頁第1頁共1頁設(shè)計模式總結(jié)一、設(shè)計原則1的分別。from:百度百科2、開閉原則〔OpenClosePrinciple〕為了使程序的擴(kuò)展性好,易于維護(hù)和升級。想要到達(dá)這樣的效這點。3、里氏代換原則〔LiskovSubstitutionPrinciple〕代換原則(LiskovSubstitutionPrincipleLSP)面對對象設(shè)計的根本原則之一。以消滅。LSP是繼承復(fù)用的基石,只有當(dāng)衍生類可以替換掉基類也能夠在基類的根底上增加的行為。里氏代換原則是對“開-閉”原則的補充。實現(xiàn)“開-閉”原則的關(guān)鍵步驟就是抽象化。而基類與子類的繼承關(guān)系就是抽象化的具體實現(xiàn),所以里氏代換原則是對實現(xiàn)抽象化的具體步驟的標(biāo)準(zhǔn)。from:百度百科4、依靠倒轉(zhuǎn)原則〔DependenceInversionPrinciple〕謂依靠倒置原則〔DependenceInversionPrinciple〕就是要依靠于抽象,不要依靠于具體。簡潔的說就是要求對抽象進(jìn)展編程,不要對實現(xiàn)進(jìn)展編程,這樣就降低了客戶與實現(xiàn)模塊間的耦合。原則就是面對對象設(shè)計的主要手段。from:百度百科5、接口隔離原則〔InterfaceSegregationPrinciple〕個原則的意思是:使用多個隔離的接口,比使用單個接口要好。還是一個降低類之間的耦合度的意思,從這兒我們看出,其實設(shè)計模式就是一個軟件的設(shè)計思想,從大型軟件架構(gòu)動身,為了升級和維護(hù)便利。所以上文中屢次消滅:降低依靠,降低耦合。6、合成復(fù)用原則〔CompositeReusePrinciple〕原則就是指在一個的對象里通過關(guān)聯(lián)關(guān)系〔包括組合關(guān)系和聚合關(guān)系〕來使用一些已有的對象,使之成為對象的一局部;對象通過委派調(diào)用已有對象的方法到達(dá)復(fù)用其已有功能的目的。簡言之:要盡量使用組合/聚合關(guān)系,少用繼承。7、迪米特法則〔最少知道原則〕〔DemeterPrinciple〕什么叫最少知道原則,就是說:一個實體應(yīng)當(dāng)盡量少的與其他實體之間發(fā)生相互作用,使得系統(tǒng)功能模塊相對獨立。也就是說一個軟件實體應(yīng)當(dāng)盡可能少的與其他實體發(fā)生相互作用。這樣,當(dāng)一個模塊修改時,就會盡量少的影響其他的模塊,擴(kuò)展會相對簡潔,這是對軟件實體之間通信的限制,它要求限制軟件實體之間通信的寬度和深度。的設(shè)計模式,試圖依據(jù)實際狀況使用適宜的方式創(chuàng)立對象。根本的對象創(chuàng)立方式可能會導(dǎo)致設(shè)計上的問題,或增加設(shè)計的簡單創(chuàng)立型模式由兩個主導(dǎo)思想構(gòu)成。實例創(chuàng)立和結(jié)合的方式。而類創(chuàng)立型模式將它對象的創(chuàng)立推遲到子類中。1、抽象工廠模式(AbstractFactory)UML參與者:生產(chǎn)產(chǎn)品。ConcreteFactory:具體工廠。具體工廠是用于生產(chǎn)全不需要實例化任何產(chǎn)品對象。AbstractProduct:抽象產(chǎn)品。這是一個產(chǎn)品家族,每一個具體工廠都能夠生產(chǎn)一整組產(chǎn)品。Product:具體產(chǎn)品。2、建筑者模式(Builder)產(chǎn)品對象的內(nèi)部構(gòu)造比較簡單。建筑者模式將簡單產(chǎn)品的構(gòu)建過程封裝分解在不同的方法制,同時假設(shè)幾個產(chǎn)品之間存在較大的差異,則不適用建筑者模UML參與者:Product個部件指定的抽象接口。ConcreteBuilder:具體建筑者。實現(xiàn)抽象接口,構(gòu)建和裝配各個部件。Director:指揮者。構(gòu)建一個Builder它主要有兩個作用,一是:隔離了客戶與對象的生產(chǎn)過程,二是:負(fù)責(zé)掌握產(chǎn)品對象的生產(chǎn)過程。Product:產(chǎn)品角色。一個具體的產(chǎn)品對象。3、工廠方法模式(FactoryMethod)工廠方法模式讓實例化推遲到子類。UML參與者:這樣一來,使用這些產(chǎn)品的類既可以引用這個接口。而不是具體類。ConcreteProduct:具體產(chǎn)品。Creator:抽象工廠。它實CreatorConcreteCreator:具體工廠。制造產(chǎn)品的實際工廠。它負(fù)責(zé)創(chuàng)立一個或者多個具體產(chǎn)4、原型模式(Prototype)的對象。了簡化的創(chuàng)立構(gòu)造。UML參與者:Prototype:抽象原型類。聲明克隆自身的接口。ConcretePrototype:具體原型類。實現(xiàn)克隆的具體操作。C5、單例模式(Singleton)就是確保某一個類只有一個實例,并且供給一個全局訪問點。1、只有一個實例。2、能夠自我實例化。3、供給全局訪問點。該實例時,可以使用單例模式。單例模式的主要優(yōu)點就是節(jié)約系統(tǒng)資源、提高了系統(tǒng)效率,同時也能夠嚴(yán)格掌握客戶對它的訪問?;蛟S就是由于系統(tǒng)中只有一個實例,這樣就導(dǎo)致了單例類的職責(zé)過重,違反了“單一職責(zé)UML構(gòu)造圖格外簡潔,就只有一個類:參與者:合,它描述了如何來類或者對象更好的組合起來,是從程序的構(gòu)造上來解決模塊之間的耦合問題。它主要包括適配器模式、橋接模式、組合模式、裝飾模式、外觀模式、享元模式、代理模式這個七個模式。1、適配器模式(Adapter)原本兩個不兼容的接口能夠無縫完成對接。性和可復(fù)用性。參與者:Target:Adapter:Adaptee,將源接口轉(zhuǎn)成目標(biāo)接口。Adaptee:適配者類。需要適配的類。Client:客戶類。2、橋接模式(Bridge)來,使得他們能夠獨立變化。解耦,削減了系統(tǒng)中類的數(shù)量,也削減了代碼量。Abstraction:抽象類。RefinedAbstraction:擴(kuò)大抽象類。Implementor:實現(xiàn)類接口。ConcreteImplementor:具體實現(xiàn)類。3、組合模式(Composite)組合模式組合多個對象形成樹形構(gòu)造以表示“整體-局部”的構(gòu)造層次。它定義了如何將容器對象和葉子對象進(jìn)展遞歸組合,使得客戶在使用的過程中無須進(jìn)展區(qū)分,可以對他們進(jìn)展全都的處理。在使用組合模式中需要留意一點也是組合模式最關(guān)鍵的地將葉子節(jié)點和對象節(jié)點進(jìn)展全都處理的緣由。加構(gòu)件也更簡潔,但是這樣就導(dǎo)致了系統(tǒng)的設(shè)計變得更加抽的挑戰(zhàn)了。參與者:Component現(xiàn)全部類共有接口的默認(rèn)行為。聲明一個接口用于訪問和治理ComponentLeaf:葉子對象。葉子結(jié)點沒有子結(jié)點。CComponent(add)和刪除(remove)等。4、裝飾者模式(Decorator)然使用繼承能夠很好擁有父類的行為,但是它存在幾個缺陷:二、簡潔產(chǎn)生“類爆炸”現(xiàn)象。這個問題。加了系統(tǒng)的簡單度。參與者:Component:象動態(tài)地添加職責(zé)。ConcreteComponent:具體構(gòu)件。是定義了一個具體的對象,也可以給這個對象添加一些職責(zé)。Decorator:Component,從外類來擴(kuò)展ComponentComponentDecoratorConcreteDecorator:具體裝飾類,起到給Component5、外觀模式(Facade)互關(guān)系,假設(shè)需要調(diào)用里面的方法,可以通過第三者來轉(zhuǎn)發(fā)調(diào)、單一的屏障,客戶通過這個屏障來與子系統(tǒng)進(jìn)展通信。實現(xiàn)了客戶與子系統(tǒng)之間的松耦合。但是它違反了“開閉原碼。參與者:Facade:外觀角色。知道哪些子系統(tǒng)類負(fù)責(zé)處理懇求,將客戶的懇求代理給適合的子系統(tǒng)處理。SubSystem:子系統(tǒng)角色。實Facade6、享元模式(Flyweight)現(xiàn)重用。享元模式就是運行共享技術(shù)有效地支持大量細(xì)粒度對象的復(fù)實現(xiàn)對象的屢次復(fù)用。這里有一點要留意:享元模式要求能夠共享的對象必需是細(xì)粒度對象。耗的時間過長。參與者:Flyweight:通過這個接口,F(xiàn)lyweightConcreteFlyweight:具體享元類。指定內(nèi)部狀態(tài),為內(nèi)部狀態(tài)增加存儲空間。UnsharedConcreteFlyweight:FlyweightFlyweightFactory:FlyweightFlyweightFlyweightFlyweightFactory就會供給一個已經(jīng)創(chuàng)立的Flyweight對象或者建一個〔假設(shè)不存在〕。7、代理模式(Proxy理,并由代理對象掌握對原對象的引用。它使得客戶不能直接與真正的目標(biāo)對象通信。代理對象是目標(biāo)對象的代表,其他需要與這個目標(biāo)對象打交道的操作都是和這個代理對象在交涉。代理對象可以在客戶端和目標(biāo)對象之間起到中介的作用,這樣起到了的作用和保護(hù)了目標(biāo)對象的,同時也在肯定程度上面削減Subject:Proxy:它能夠在任何時刻都能夠代理真實對象。代理角色內(nèi)部包含有對真實對象的引用,所以她可以操作真實對象,同時也可以附加其他的操作,相當(dāng)于對真實對象進(jìn)展封裝。RealSubject:色。它代表著真實對象,是我們最終要引用的對象。樣交互和怎樣安排職責(zé)的。它涉及到算法和對象間的職責(zé)安排,不僅描述對象或者類的模式,還描述了他們之間的通信方式,它將你的留意力從掌握流轉(zhuǎn)移到了對象間的關(guān)系上來。行為型類模式承受繼承機(jī)制在類間分派行為,而行為型對象模式使用對象復(fù)合而不是繼承。它主要包括如何11中設(shè)計模式:職責(zé)鏈模式、命令模式、解釋器模式、迭代器模式、中介者模式、備忘錄模式、觀看者模式、狀態(tài)模式、策略模式、模板方法模式、訪問者模式。1、職責(zé)鏈模式(ChainofResponsibility)有對象處理而留在鏈末尾端。接收懇求,將這些對象連接成一條鏈,并且沿著這條鏈傳遞請便利。但是在職責(zé)鏈中我們不能保證全部的懇求都能夠被處理,而且不利于觀看運行時特征。參與者:Handler:處理者都必需實現(xiàn)該抽象類。ConcreteHandler:處理它所負(fù)責(zé)的懇求,同時也可以訪問它的后繼者。假設(shè)它能夠處理該懇求則處理,否則將懇求傳遞到它的后繼者。Client:戶類。2、命令模式(Command)成對象的我們稱之為命令模式。所以命令模式將懇求封裝成對時命令模式支持可撤銷的操作。命令模式可以將懇求的發(fā)送者和接收者之間實現(xiàn)完全的解命令類。參與者:Command:抽象命令類。用來聲明執(zhí)行操作的接口。ConcreteCommand:具體命令類。將一個接收者對象綁定于一個動Excute。Invoker:調(diào)用者。要求該命令執(zhí)行這個懇求。Receiver:與執(zhí)行一個懇求相關(guān)的操作,任何類都有可能成為一個接收者。Client:客戶類。3、解釋器模式(Interpreter)個句子,以及如何解釋這些句子。參與者:AbstractExpression:抽象表達(dá)式。聲明一個抽象的解釋操作,該接口為抽象語法樹中全部的節(jié)點共享。TerminalExpression:的解釋操作。實現(xiàn)抽象表達(dá)式中所要求的方法。文法中每一個終結(jié)符都有一個具體的終結(jié)表達(dá)式與之相對應(yīng)。NonterminalExpression:非終結(jié)符表達(dá)式。為文法中的非終結(jié)符相關(guān)的解釋操作。Context:環(huán)境類。包含解釋器之外的一些全局信息。Client:4、迭代器模式(Iterator)們就期望有某個東西能夠以多種不同的方式來遍歷一個聚合對象,這時迭代器模式消滅了。的迭代。符合單一職責(zé)原則了。參與者:Iterator:抽象迭代器:全部迭代器都需要實現(xiàn)的接口,供給了游走聚合對象元素之間的方法。ConcreteIterator:代器。利用這個具體的迭代器能夠?qū)唧w的聚合對象進(jìn)展遍歷。每一個聚合對象都應(yīng)當(dāng)對應(yīng)一個具體的迭代器。Aggregate:象聚合類。ConcreteAggregate:creatorIterator方法,返回該聚合對象的迭代器。5、中介者模式(Mediator)發(fā)他們的懇求。同樣,這里我們利用中介者來解決這個問題。所謂中介者模式就是用一個中介對象來封裝一系列的對象交互,中介者使各對象不需要顯式地相互引用,從而使其耦合松的相互關(guān)系,供給了系統(tǒng)可復(fù)用性,簡化了系統(tǒng)的構(gòu)造。中介者模式,而是要認(rèn)真思考是不是您設(shè)計的系統(tǒng)存在問題。參與者:Mediator:抽象中介者。定義了同事對象到中介者對象之間的接口。ConcreteMediator:法,它需要知道全部的具體同事類,同時需要從具體的同事類那里接收信息,并且向具體的同事類發(fā)送信息。Colleague:同事類。ConcreteColleague:只需要知道自己的行為即可,但是他們都需要生疏中介者。6、備忘錄模式(Memento)它可以使系統(tǒng)恢復(fù)到某一特定的歷史狀態(tài)。比較大的資源,而且每一次保存都會消耗肯定的內(nèi)存。參與者:Originator:對象的內(nèi)部狀態(tài),通過也可以使用它來利用備忘錄恢復(fù)內(nèi)部狀MementoOriginator那些內(nèi)部狀態(tài)。Memento:備忘錄。用于存儲OriginatorOriginatorMemento。在備MementoCaretaker的窄接口,它只能將備忘錄傳遞給其他對象。Originator到寬接口,允許它訪問返回到從前狀態(tài)的全部數(shù)據(jù)。Caretaker:負(fù)責(zé)人。負(fù)責(zé)保存好備忘錄,不能對備忘錄的內(nèi)容進(jìn)展操作和訪問,只能夠?qū)渫泜鬟f給其他對象。7、觀看者模式(Observer)收到通知并且自動更。者之間沒有相互聯(lián)系,所以么可以依據(jù)需要增加和刪除觀看者,使得系統(tǒng)更易于擴(kuò)展。耦合的方式結(jié)合。參與者:集里,每一個主題都可以有多個觀看者。Observer:觀看者。為全部的具體觀看者定義一個接口,在得到主題的通知時能夠準(zhǔn)時的更自己。ConcreteSubject:具體主題。將有關(guān)狀態(tài)存入具體觀看者對象。在具體主題發(fā)生轉(zhuǎn)變時,給全部的觀看者發(fā)出通知。ConcreteObserver:具體觀看者。實現(xiàn)抽象觀看者角色所要求的更接口,以便使本身的狀態(tài)與主題狀態(tài)相協(xié)調(diào)。8、狀態(tài)模式(State)是什么狀態(tài)就要做出什么樣的行為。這個就是狀態(tài)模式。行為,對象看起來似乎修改了它的類。在狀態(tài)模式中我們可以削減大塊的if…else語句,它是允許態(tài)轉(zhuǎn)換規(guī)律與狀態(tài)對象合成一體,但是削減if…else語句的代價就是會換來大量的類,所以狀態(tài)模式勢必會增加系統(tǒng)中類或者對象的個數(shù)。同時狀態(tài)模式是將全部與某個狀態(tài)有關(guān)的行為放到一個類,假設(shè)使用不當(dāng)就會導(dǎo)致程序的構(gòu)造和代碼混亂,不利于維護(hù)。參與者:Context:環(huán)境類??梢园ㄒ恍﹥?nèi)部狀態(tài)。State:抽象狀態(tài)類。State定義了一個全部具體狀態(tài)的共同接口,任何狀態(tài)都實現(xiàn)這個一樣的接口,這樣一來,狀態(tài)之間就可以相互轉(zhuǎn)換了。ConcreteState:具體狀態(tài)類。具體狀態(tài)類,用于處理ContextConcreteStateContext9、策略模式(Strategy)方式來實現(xiàn)它,使得系統(tǒng)能夠格外敏捷,這就是策略模式。前可以相互轉(zhuǎn)換,此模式然該算法的變化獨立于使用算法的客戶。選擇,即什么算法對于什么問題最適宜這是策略模式所不關(guān)心最適宜的,這樣就增加客戶端的負(fù)擔(dān)。的策略類。參與者:Context:StrategyConcreteStra

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論