![設(shè)計(jì)模式考點(diǎn)_第1頁(yè)](http://file4.renrendoc.com/view/fc7ca80bc135a4dd3ed6a6b830be0196/fc7ca80bc135a4dd3ed6a6b830be01961.gif)
![設(shè)計(jì)模式考點(diǎn)_第2頁(yè)](http://file4.renrendoc.com/view/fc7ca80bc135a4dd3ed6a6b830be0196/fc7ca80bc135a4dd3ed6a6b830be01962.gif)
![設(shè)計(jì)模式考點(diǎn)_第3頁(yè)](http://file4.renrendoc.com/view/fc7ca80bc135a4dd3ed6a6b830be0196/fc7ca80bc135a4dd3ed6a6b830be01963.gif)
![設(shè)計(jì)模式考點(diǎn)_第4頁(yè)](http://file4.renrendoc.com/view/fc7ca80bc135a4dd3ed6a6b830be0196/fc7ca80bc135a4dd3ed6a6b830be01964.gif)
![設(shè)計(jì)模式考點(diǎn)_第5頁(yè)](http://file4.renrendoc.com/view/fc7ca80bc135a4dd3ed6a6b830be0196/fc7ca80bc135a4dd3ed6a6b830be01965.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
設(shè)計(jì)模式題庫(kù)--自編版選擇題1、設(shè)計(jì)模式具有()的優(yōu)點(diǎn)。A、提高系統(tǒng)性能 B、降低軟件規(guī)模和復(fù)雜度C、減少代碼開發(fā)工作量D、提升軟件設(shè)計(jì)的質(zhì)量在面向?qū)ο筌浖拈_發(fā)中,采用設(shè)計(jì)模式()??梢詼p少在設(shè)計(jì)和過(guò)程中需要?jiǎng)?chuàng)建的實(shí)例對(duì)象的數(shù)量可以保證程序的運(yùn)行速度達(dá)到最優(yōu)值可以復(fù)用相似問(wèn)題的相同解決方案允許在非面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言中使用面向?qū)ο蟮母拍睿ǎ┒际切袨樾驮O(shè)計(jì)模式。組合模式、適配者模式和代理模式觀察者模式、職責(zé)鏈模式和策略模式原型模式、建造者模式和單例模式迭代器模式、命令模式和橋接模式4.開閉原則是面向?qū)ο蟮目蓮?fù)用設(shè)計(jì)的基石,開閉原則是指一個(gè)軟件實(shí)體應(yīng)當(dāng)對(duì)()開放,對(duì)()關(guān)閉;里氏代換原則是指任何()可以出現(xiàn)的地方,()一定可以出現(xiàn);依賴倒置原則就是依賴于(),而不要依賴于(),或者說(shuō)要針對(duì)接口編程,不要針對(duì)實(shí)現(xiàn)編程。①A、修改B、擴(kuò)展C、分析D、設(shè)計(jì)②A、修改B、擴(kuò)展C、分析D、設(shè)計(jì)③A、變量B、常量C、基類對(duì)象D、子類對(duì)象④A、變量B、常量C、基類對(duì)象D、子類對(duì)象⑤A、程序設(shè)計(jì)語(yǔ)言B、建模語(yǔ)言C、實(shí)現(xiàn)D、抽象⑥A、程序設(shè)計(jì)語(yǔ)言B、建模語(yǔ)言C、實(shí)現(xiàn)D、抽象5.關(guān)于單一責(zé)原則,以下敘述錯(cuò)誤的是()。一個(gè)雷只負(fù)責(zé)一個(gè)功能領(lǐng)域中的相應(yīng)職責(zé)。就一個(gè)類而言,應(yīng)該有且僅有一個(gè)引起它變化的原因。一個(gè)類承擔(dān)的職責(zé)越多,越容易復(fù)用,被復(fù)用的可能性越大。當(dāng)一個(gè)類承擔(dān)的職責(zé)過(guò)多時(shí),需要將職責(zé)進(jìn)行分離,將不同的職責(zé)封裝在不同的類中。以下關(guān)于面向?qū)ο笤O(shè)計(jì)的的敘述中,錯(cuò)誤的是()。高層模塊不應(yīng)該依賴于低層模塊。抽象不應(yīng)該依賴于細(xì)節(jié)。細(xì)節(jié)可以依賴于抽象。高層模塊無(wú)法不依賴于低層模塊。在系統(tǒng)設(shè)計(jì)中應(yīng)用迪米特法則,以下敘述有誤的是()。在類的劃上,一個(gè)盡量創(chuàng)建松耦合的類,類的耦合度越低,復(fù)用越容易。如果兩個(gè)類之間不必彼此直接通信,那么這兩個(gè)類就不應(yīng)該發(fā)生直接的 相互作用。在對(duì)其他類的引用上,一個(gè)對(duì)象對(duì)其他對(duì)象的引用應(yīng)該降到最低。在類的設(shè)計(jì)上,只要有可能,一個(gè)類型應(yīng)該盡量設(shè)計(jì)成抽象類或接口,且成員變量和成員函數(shù)的訪問(wèn)權(quán)限最好設(shè)置為公開的。在簡(jiǎn)單工廠模式中,如果需要增加新的具體產(chǎn)品,通常需要修改()的源代碼。A、抽象產(chǎn)品類 B、其他具體產(chǎn)品類 C.X廠類D、客戶類以下關(guān)于簡(jiǎn)單工廠模式敘述錯(cuò)誤的是()。A、 簡(jiǎn)單工廠模式可以根據(jù)參數(shù)的不同返回不同的產(chǎn)品類的實(shí)例。B、 簡(jiǎn)單工廠模式專門定義一個(gè)類來(lái)負(fù)責(zé)創(chuàng)建其他類的實(shí)例,被創(chuàng)建的實(shí)例通常都具有共同的父類。C、 簡(jiǎn)單工廠模式可以減少系統(tǒng)中的類的個(gè)數(shù),簡(jiǎn)化系統(tǒng)的設(shè)計(jì),使得系統(tǒng)更易于理解。D、 系統(tǒng)的擴(kuò)展困難,在添加新的產(chǎn)品時(shí)需要修好工廠的業(yè)務(wù)邏輯,違背了開閉原則。以下代碼使用了()模式。abstractclassProduct(publicabstractvoidProcess();}classConcreateProductB:Product(PublicoverridevoidProcess()...}ClassFactory(PublicstaticProductCreateProduct(chartype)(Switch(type)(Case‘A’:ReturnnewConcreateProductA();break;Case‘B’:ReturnnewConcreateProductB();break;}}}SimpleFactory B、FactoryMethodC、AbstractFactory D、未使用任何設(shè)計(jì)模式不同品牌的手機(jī)應(yīng)該由不同是公司所造,例如Motorola公司生產(chǎn)Motorola手機(jī),Nokia公司生產(chǎn)Nokia手機(jī)。該場(chǎng)景蘊(yùn)含了()模式。A、SimpleFactoryB、FactoryMethod C、AbstractFactoryD、Builder以下關(guān)于工廠方法模式的敘述錯(cuò)誤的是()。在工廠方法模式中引入了抽象工廠類,二具體產(chǎn)品的場(chǎng)景延遲到具體工 廠中實(shí)現(xiàn)使用工廠方法模式添加新的產(chǎn)品對(duì)象很容易,無(wú)須對(duì)原有系統(tǒng)進(jìn)行修改,符合開閉原則工廠方法模式存在的問(wèn)題是在添加新產(chǎn)品時(shí),需要編寫新的具體產(chǎn)品類,而且提供與之對(duì)應(yīng)的具體工廠類,隨著類個(gè)數(shù)的增加,會(huì)給系統(tǒng)帶來(lái)一些額外開銷。工廠方法模式是所有形式的工廠模式中的最為抽象和最具一般性的一種 形態(tài),工廠方法模式退化后可以演變成抽象工廠模式。某銀行系統(tǒng)采用工廠模式描述其不同賬戶之間的關(guān)系,設(shè)計(jì)出的類圖如圖4-7所示。其中,與工廠模式中的“Creator”角色相對(duì)應(yīng)的類是();與“Product”角色相對(duì)應(yīng)的類是()。A、Bank B、Account C、Checking D、SavingsA、Bank B、Account C、Checking D、Savings14、關(guān)于C#中的MemberwiseClone()方法,以下敘述有誤的是()。A、 對(duì)于對(duì)象x,都有()==xB、 對(duì)于對(duì)象x,都有().GetType()==()C、 對(duì)于對(duì)象x的成員對(duì)象Member,都有().Menber==D、 對(duì)于對(duì)象x的成員對(duì)象Member,都有().()==以下關(guān)于原型模式敘述錯(cuò)誤的是()。原型模式通過(guò)給出一個(gè)原型對(duì)象來(lái)指明所要?jiǎng)?chuàng)建的對(duì)象的類型,然后 用復(fù)制這個(gè)原型對(duì)象的方法創(chuàng)建出更多同類型的對(duì)象淺克隆僅僅復(fù)制所考慮的對(duì)象,而不復(fù)制它所引用的對(duì)象,也就是其 中的成員對(duì)象并不復(fù)制在原型模式中實(shí)現(xiàn)深克隆時(shí)通常需要編寫較為復(fù)雜的代碼在原型模式中不需要為每一個(gè)類配備一個(gè)克隆方法,因此對(duì)于原型模式的擴(kuò)展很靈活,對(duì)于已有類的改造也較為容易某公司要開發(fā)一個(gè)即時(shí)聊天軟件,用戶在聊天過(guò)程中可以與多位好友同時(shí)聊天,在私聊時(shí)將產(chǎn)生多個(gè)聊天窗口,為了提高聊天窗口的創(chuàng)建效率,要去根據(jù)第一個(gè)窗口快速創(chuàng)建其他窗口。針對(duì)這種需求,采用()進(jìn)行設(shè)計(jì)最為合適。享元模式B、單例模式C、原型模式 D、組合模式在()時(shí)可使用單例模式。隔離菜單項(xiàng)對(duì)象的創(chuàng)建和使用防止一個(gè)資源管理器窗口被實(shí)例化多次使用一個(gè)已有的查找算法而不想修改既有代碼不能創(chuàng)建子類,需要擴(kuò)展一個(gè)數(shù)據(jù)過(guò)濾器以下關(guān)于單例模式的描述,正確的是()。它描述了只有一個(gè)方法的類的集合它能夠保證一個(gè)類只產(chǎn)生一個(gè)唯一的實(shí)例它描述了只有一個(gè)屬性的類的集合它能夠保證一個(gè)類的方法只能被一個(gè)唯一的類調(diào)用以下()不是單例模式的要點(diǎn)。某個(gè)類只能有一個(gè)實(shí)例單例類不能被繼承必須自行創(chuàng)建單個(gè)實(shí)例必須自行向整個(gè)系統(tǒng)提供單個(gè)實(shí)例()將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口,使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。A、命令(Command)模式 B、適配器(Adapter)模式C、策略(Strategy)模式 D、單例(Simple)模式以下關(guān)于適配器模式的敘述錯(cuò)誤的是()。TOC\o"1-5"\h\z適配器模式將一個(gè)接口裝換成客戶希望的另一個(gè)接口,使得原本由于接 口不兼容那些類可以一起工作。在類適配器中,Adapter和Adaptee是繼承關(guān)系,而在對(duì)象適配器中,Adapter和Adaptee是關(guān)聯(lián)關(guān)系。類適配器比對(duì)象適配器更加靈活,在C#語(yǔ)言中可以通過(guò)類適配器一次視 頻多個(gè)適配者類。適配器可以在不修改原來(lái)的適配者接口Adaptee的情況下將一個(gè)類的接 口和另一個(gè)類的接口匹配起來(lái)。現(xiàn)需要開發(fā)一個(gè)文件轉(zhuǎn)換軟件,將文件由一種格式轉(zhuǎn)換為另一種格式,例如將XML文件轉(zhuǎn)換為PDF文件,將DOC文件轉(zhuǎn)換為TXT文件,有些文件格式轉(zhuǎn)換代碼已經(jīng)存在,為了將已有的代碼應(yīng)用于新軟件,而不需要修改軟件的整體結(jié)構(gòu),可以使用()模式進(jìn)行系統(tǒng)設(shè)計(jì)。適配器(Adapter) B、組合(Composite)C、外觀(Faced) D、橋接(Bridge)在對(duì)象適配器模式中,適配器類(Adapter)和適配者類(Adaptee)之間的關(guān)系為()。關(guān)聯(lián)關(guān)系B、依賴關(guān)系C、繼承關(guān)系 D、實(shí)現(xiàn)關(guān)系()模式將抽象部分與它的實(shí)現(xiàn)部分相分離,使它們都可以獨(dú)立地變化。圖10-7所示為該模式的圖,其中,()用于定義實(shí)現(xiàn)部分的接口。C、ConcreteImplementorBD、Implementor以下關(guān)于橋接模式的敘述錯(cuò)誤的是()。橋接模式的用意是將抽象化與實(shí)現(xiàn)化解耦,使得亮著可以獨(dú)立地變化。橋接模式將繼承關(guān)系轉(zhuǎn)換成關(guān)聯(lián)關(guān)系,從而降低系統(tǒng)的耦合度。橋接模式來(lái)源動(dòng)態(tài)地給一個(gè)對(duì)象增加功能,這些功能也可以動(dòng)態(tài)的撤銷。橋接模式可以從接口中分離實(shí)現(xiàn)功能,使得設(shè)計(jì)更具有擴(kuò)展性。()不是橋接模式所適用的環(huán)境。一個(gè)可以跨平臺(tái)并支持多種格式的文件編輯器一個(gè)支持多數(shù)據(jù)源的報(bào)表生成工具,可以以不同的圖形方式顯示報(bào)表信息一個(gè)可動(dòng)態(tài)選擇排序算法的數(shù)據(jù)操作工具一個(gè)支持多種編程語(yǔ)言的跨平臺(tái)開發(fā)工具當(dāng)不能采用生成子類的方法進(jìn)行擴(kuò)展時(shí),可采用()模式動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的職責(zé)。A、外觀(Faced)B、單例(Simple)C、參與者(Participant)D、裝飾(Decorator)以下()不是裝飾模式的適用條件。要擴(kuò)展一個(gè)類的功能或給一個(gè)類增加附加責(zé)任要?jiǎng)討B(tài)地給一個(gè)對(duì)象增加功能,這些功能還可以動(dòng)態(tài)撤銷要?jiǎng)討B(tài)組合多于一個(gè)的抽象化角色和實(shí)現(xiàn)化角色要通過(guò)一些基本功能的組合產(chǎn)生復(fù)雜功能,而不使用繼承關(guān)系操作系統(tǒng)中的應(yīng)用程序快捷方式是()模式的應(yīng)用實(shí)例。A、代理(Proxy)B、組合(Composite)C、裝飾(Decorator)D、外觀(Faced)以下關(guān)于代理模式的敘述錯(cuò)誤的是()。代理模式能夠協(xié)調(diào)調(diào)用者和被調(diào)用者,從而在一定程度上降低系統(tǒng)的耦合度控制對(duì)一個(gè)對(duì)象的訪問(wèn),給不同的用戶提供不同級(jí)別的使用權(quán)限時(shí)可以考慮使用遠(yuǎn)程代理代理模式的缺點(diǎn)是請(qǐng)求的處理速度會(huì)變慢,并且實(shí)現(xiàn)代理模式需要額外的工作代理模式給某一個(gè)對(duì)象提供一個(gè)代理,并由代理對(duì)象控制對(duì)原對(duì)象的引用代理模式有多種類型,其中,智能引用代理是指()。為某一個(gè)目標(biāo)操作的結(jié)果提供臨時(shí)的存儲(chǔ)空間,以便多個(gè)客戶端可以共 享這些結(jié)果保護(hù)目標(biāo)不讓惡意用戶接近使幾個(gè)用戶能夠同時(shí)使用一個(gè)對(duì)象而沒(méi)有沖突當(dāng)一個(gè)對(duì)象被引用時(shí),提供一些額外的操作,例如將此對(duì)象被調(diào)用的次數(shù)記錄下來(lái)以下關(guān)于命令模式的敘述錯(cuò)誤的是()。TOC\o"1-5"\h\z命令模式將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而可以用不同的請(qǐng)求對(duì)客戶進(jìn) 行參數(shù)化命令模式可以將請(qǐng)求發(fā)送至和請(qǐng)求接受者解耦使用命令模式會(huì)導(dǎo)致某些系統(tǒng)有過(guò)多的具體命令類,導(dǎo)致在有些系統(tǒng)中 命令模式變得不切實(shí)際命令模式是對(duì)命令的封裝,命令模式把發(fā)出命令的責(zé)任和執(zhí)行命令的責(zé) 任機(jī)制在同一個(gè)類中,委派給同意的類來(lái)進(jìn)行處理在()時(shí)無(wú)需使用命令模式。實(shí)現(xiàn)撤銷操作和恢復(fù)操作將請(qǐng)求的發(fā)送者和接收者解耦不改變聚合類的前提下定義作用于聚合中元素的新操作不同的時(shí)間指定請(qǐng)求,并將請(qǐng)求排隊(duì)()模式定義了對(duì)象間的一種一對(duì)多的依賴關(guān)系,以便當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并自動(dòng)刷新。適配器(Adapter) B、迭代器(Iterator)C、原型(Prototype) D、觀察者(Observer)在觀察者模式中,()。一個(gè)Subject對(duì)象可對(duì)應(yīng)多個(gè)Observer對(duì)象Subject只能有一個(gè)ConcreteSubject子類Observer只能有一個(gè)ConcreteObserver子類一個(gè)Subject對(duì)象必須至少對(duì)應(yīng)一個(gè)Observer對(duì)象下面這句話隱含了()模式。我和妹妹跟媽媽說(shuō):“媽媽,我和妹妹在院子里玩。飯做好了叫我們一聲?!边m配器 B、職責(zé)鏈 C、觀察者 D、迭代器簡(jiǎn)答題什么是設(shè)計(jì)模式,它包含那些基本要素設(shè)計(jì)模式是一套反復(fù)使用的、多數(shù)人知曉、經(jīng)過(guò)分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié),使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解并且提高代碼的可靠性。設(shè)計(jì)模式是一種用于對(duì)軟件系統(tǒng)中不斷重現(xiàn)的設(shè)計(jì)問(wèn)題的解決方案進(jìn)行文檔化的技術(shù),也是一種共享專家設(shè)計(jì)經(jīng)驗(yàn)的技術(shù)。設(shè)計(jì)模式的基本要素:模式名稱、問(wèn)題、目的、解決方案、效果、實(shí)例代碼、相關(guān)設(shè)計(jì)模式(其中有4個(gè)關(guān)鍵要素:模式名稱、問(wèn)題、解決方案、效果)設(shè)計(jì)模式如何分類,每一類設(shè)計(jì)模式有何優(yōu)點(diǎn)(1) 根據(jù)目的可分為創(chuàng)建型,結(jié)構(gòu)型和行為型;創(chuàng)建型模式主要用于創(chuàng)建對(duì)象結(jié)構(gòu)型模式主要用于處理類或?qū)ο蟮慕M合行為型模式主要用于描述類或?qū)ο笕绾谓换ズ驮鯓臃峙渎氊?zé)(2) 根據(jù)范圍,即模式主要是處理類之間的關(guān)系還是處理對(duì)象之間的關(guān)系,可分為類模式和對(duì)象模式;類模式處理類和子類之間的關(guān)系,這些關(guān)系通過(guò)繼承建立,在編譯時(shí)刻就被確定下來(lái),是一種靜態(tài)關(guān)系對(duì)象模式處理對(duì)象間的關(guān)系,這些關(guān)系在運(yùn)行時(shí)變化,更具動(dòng)態(tài)性設(shè)計(jì)模式具有哪些優(yōu)點(diǎn)(1) 融合了眾多專家的經(jīng)驗(yàn),并以一種標(biāo)準(zhǔn)的形式供廣大開發(fā)人員所用(2) 提供了一套通用的設(shè)計(jì)詞匯和一種通用的語(yǔ)言,以方便開發(fā)人員之間進(jìn)行溝通和交流,使得設(shè)計(jì)方案更加通俗易懂(3) 讓人們可以更加簡(jiǎn)單方便地復(fù)用成功的設(shè)計(jì)和體系結(jié)構(gòu)(4) 使得設(shè)計(jì)方案更加靈活,且易于修改(5) 將提高軟件系統(tǒng)的開發(fā)效率和軟件質(zhì)量,且在一定程度上節(jié)約設(shè)計(jì)成本(6) 有助于初學(xué)者更深入地理解面向?qū)ο笏枷?,方便閱讀和學(xué)習(xí)現(xiàn)有類庫(kù)與其他系統(tǒng)中的源代碼,還可以提高軟件的設(shè)計(jì)水平和代碼質(zhì)量常見(jiàn)的設(shè)計(jì)模式有哪些優(yōu)點(diǎn)簡(jiǎn)單工廠模式:(1)實(shí)現(xiàn)了對(duì)象創(chuàng)建和使用的分離;(2)客戶端無(wú)須知道所創(chuàng)建的具體產(chǎn)品類的類名,只需要知道具體產(chǎn)品類所對(duì)應(yīng)的參數(shù)即可;工廠方法模式:(1)工廠方法用來(lái)創(chuàng)建客戶所需要的產(chǎn)品,同時(shí)還向客戶隱藏了哪種具體產(chǎn)品類將被實(shí)例化這一細(xì)節(jié);(2)能夠讓工廠自主確定創(chuàng)建何種產(chǎn)品對(duì)象,而如何創(chuàng)建這個(gè)對(duì)象的細(xì)節(jié)則完全封裝在具體工廠內(nèi)部;(3)在系統(tǒng)中加入新產(chǎn)品時(shí),完全符合開閉原則;單例模式:(1)提供了對(duì)唯一實(shí)例的受控訪問(wèn);(2)可以節(jié)約系統(tǒng)資源,提高系統(tǒng)的性能;原型模式:(1)簡(jiǎn)化對(duì)象的創(chuàng)建過(guò)程,通過(guò)復(fù)制一個(gè)已有實(shí)例可以提高新實(shí)例的創(chuàng)建效率擴(kuò)展性較好;(2)提供了簡(jiǎn)化的創(chuàng)建結(jié)構(gòu),原型模式中產(chǎn)品的復(fù)制是通過(guò)封裝在原型類中的克隆方法實(shí)現(xiàn)的,無(wú)須專門的工廠類來(lái)創(chuàng)建產(chǎn)品;(3)可以使用深克隆的方式保存對(duì)象的狀態(tài),以便在需要的時(shí)候使用,可輔助實(shí)現(xiàn)撤銷操作;適配器模式:(1)將目標(biāo)類和適配者類解耦,通過(guò)引入一個(gè)適配器類來(lái)重用現(xiàn)有的適配者類,無(wú)須修改原有結(jié)構(gòu);(2)增加了類的透明性和復(fù)用性,提高了適配者的復(fù)用性,同一個(gè)適配者類可以在多個(gè)不同的系統(tǒng)中復(fù)用;(3)靈活性和擴(kuò)展性非常好;裝飾模式:(1)對(duì)于擴(kuò)展一個(gè)對(duì)象的功能,裝飾模式比繼承更加靈活,不會(huì)導(dǎo)致類的個(gè)數(shù)急劇增加;(2)可以通過(guò)一種動(dòng)態(tài)的方式來(lái)擴(kuò)展一個(gè)對(duì)象的功能,通過(guò)配置文件可以在運(yùn)行時(shí)選擇不同的具體裝飾類,從而實(shí)現(xiàn)不同的行為;(3)可以對(duì)一個(gè)對(duì)象進(jìn)行多次裝飾;(4)具體構(gòu)件類與具體裝飾類可以獨(dú)立變化,用戶可以根據(jù)需要增加新的具體構(gòu)件類和具體裝飾類,且原有類庫(kù)代碼無(wú)須改變,符合開閉原則;代理模式:(1)能夠協(xié)調(diào)調(diào)用者和被調(diào)用者,在一定程度上降低了系統(tǒng)的耦合度;(2)客戶端可以針對(duì)抽象主題角色進(jìn)行編程,增加和更換代理類無(wú)須修改源代碼,符合開閉原則,系統(tǒng)具有較好的靈活性和可擴(kuò)展性;橋梁模式:(1)需要在抽象化和具體化之間增加更多的靈活性,避免在兩個(gè)層次之間建立靜態(tài)的繼承關(guān)系;(2)抽象部分和實(shí)現(xiàn)部分可以以繼承的方式獨(dú)立擴(kuò)展而互不影響;(3)一個(gè)類存在兩個(gè)(或多個(gè))獨(dú)立變化的維度,且這兩個(gè)(或多個(gè))維度都需要獨(dú)立地進(jìn)行擴(kuò)展不希望使用繼承或因?yàn)槎鄬永^承導(dǎo)致系統(tǒng)類的個(gè)數(shù)急劇增加的系統(tǒng);觀察者模式:(1)可以實(shí)現(xiàn)表示層和數(shù)據(jù)邏輯層的分離;(2)在觀察目標(biāo)和觀察者之間建立一個(gè)抽象的耦合;(3)支持廣播通信,簡(jiǎn)化了一對(duì)多系統(tǒng)設(shè)計(jì)的難度;(3)符合開閉原則,增加新的具體觀察者無(wú)須修改原有系統(tǒng)代碼,在具體觀察者與觀察目標(biāo)之間不存在關(guān)聯(lián)關(guān)系的情況下,增加新的觀察目標(biāo)也很方便;命令模式:(1)降低了系統(tǒng)的耦合度;(2)新的命令可以很容易地加入到系統(tǒng)中,符合開閉原則;(3)可以比較容易地設(shè)計(jì)一個(gè)命令隊(duì)列或宏命令(組合命令);(4)為請(qǐng)求的撤銷(Undo)和恢復(fù)(Redo)操作提供了一種設(shè)計(jì)和實(shí)現(xiàn)方案;透明與半透明模式透明模式:客戶端完全對(duì)抽象編程;半透明模式:使用具體裝飾類型定義裝飾之后的類,而具體構(gòu)件可以繼續(xù)使用抽象構(gòu)件類型來(lái)定義;不可以實(shí)現(xiàn)對(duì)同一個(gè)對(duì)象的多次修飾。設(shè)計(jì)原則的概念(前四個(gè))、優(yōu)點(diǎn)。單一職責(zé)原則:一個(gè)對(duì)象應(yīng)該只包含單一的職責(zé),并且該職責(zé)被完整地封裝在一個(gè)類中。優(yōu)點(diǎn):(1)類的復(fù)雜度降低,實(shí)現(xiàn)什么職責(zé)都有清晰明確的定義;(2)可讀性提高;復(fù)雜度降低,那當(dāng)然可讀性提高了;(3)可維護(hù)性提高,可讀性提高,那就更容易維護(hù)了;(4)變更引起的風(fēng)險(xiǎn)降低;也就是說(shuō)提高了擴(kuò)展性和可維護(hù)性開閉原則:軟件實(shí)體應(yīng)當(dāng)對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。優(yōu)點(diǎn):方便對(duì)系統(tǒng)進(jìn)行擴(kuò)展,在擴(kuò)展時(shí)無(wú)需修改代碼,提高系統(tǒng)的穩(wěn)定性和延續(xù)性。里士代換原則:所有引用基類的地方必須能透明地使用其子類的對(duì)象。優(yōu)點(diǎn):運(yùn)行時(shí),子類實(shí)例替換父類實(shí)例,可以很方便地?cái)U(kuò)展系統(tǒng)的功能,無(wú)須修改原有子類的代碼,增加一個(gè)新的功能可以通過(guò)增加一個(gè)新的子類來(lái)實(shí)現(xiàn)。依賴倒轉(zhuǎn)原則:高層模塊不應(yīng)該依賴低層模塊,它們都應(yīng)該依賴抽象。抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象。優(yōu)點(diǎn):系統(tǒng)具有很好的靈活性,當(dāng)系統(tǒng)行為發(fā)生變化,只需要對(duì)抽象層進(jìn)行擴(kuò)展,在不修改的情況下來(lái)擴(kuò)展系統(tǒng)的功能。淺克隆與深克隆的區(qū)別淺克隆:當(dāng)原型對(duì)象被復(fù)制時(shí),只復(fù)制它本身和其中包含的值類型的成員變量,而引用類型的成員變量并沒(méi)有復(fù)制;深克?。撼藢?duì)象本身被復(fù)制外,對(duì)象所包含的所有成員變量也將被復(fù)制;分析理解餓漢式和懶漢式單例的異同。共同點(diǎn):餓漢式單例類和懶漢式單例類的構(gòu)造函數(shù)都是私有的。餓漢式單例類:無(wú)須考慮多個(gè)線程同時(shí)訪問(wèn)的問(wèn)題;調(diào)用速度和反應(yīng)時(shí)間優(yōu)于懶漢式單例;資源利用效率不及懶漢式單例;系統(tǒng)加載時(shí)間可能會(huì)比較長(zhǎng)懶漢式單例類:實(shí)現(xiàn)了延遲加載;必須處理好多個(gè)線程同時(shí)訪問(wèn)的問(wèn)題;需通過(guò)雙重檢查鎖定等機(jī)制進(jìn)行控制,將導(dǎo)致系統(tǒng)性能受到一定影響什么是雙重鎖定為什么要進(jìn)行雙重鎖定,JAVA中如何實(shí)現(xiàn)雙重鎖定。定義:是一種對(duì)單例對(duì)象創(chuàng)建進(jìn)行控制的雙重判斷機(jī)制。目的:更好地對(duì)單例對(duì)象的創(chuàng)建進(jìn)行控制。實(shí)現(xiàn)過(guò)程:在雙重檢查鎖定中,當(dāng)實(shí)例不存在且同時(shí)有兩個(gè)線程調(diào)用GetInstance()方法時(shí),它們都可以通過(guò)第一重“instance==null”判斷,如果此時(shí)不進(jìn)行“instance==null”判斷,第二個(gè)線程并不知道實(shí)例已經(jīng)創(chuàng)建,將會(huì)創(chuàng)建新的實(shí)例,還會(huì)產(chǎn)生多個(gè)單例對(duì)象,違背了單例模式的設(shè)計(jì)思想。代碼題(簡(jiǎn)單工廠模式)使用簡(jiǎn)單工廠模式模擬女蝸(Nvwa)造人(Person),如果向造人的工廠方法傳入?yún)?shù)“M”,則返回一個(gè)男人(Man)對(duì)象,如果傳入?yún)?shù)“W”則返回一個(gè)女人(Woman)對(duì)象,繪制相應(yīng)的類圖并使用JAVA語(yǔ)言模擬實(shí)現(xiàn)該場(chǎng)景。先需要增加一個(gè)新的機(jī)器人類,如果傳入?yún)?shù)“R”則返回一個(gè)機(jī)器人(Robot)對(duì)象,對(duì)代碼進(jìn)行修改并注意女蝸類的變化。publicinterfacePerson(publicvoidpersonmethod();}publicclassManPersonimplementsPerson(publicvoidpersonmethod()("男人");}}publicclassWomanPersonimplementsPerson(publicvoidpersonmethod()("女人”);}}publicclassCreator(publicstaticPersoncreateperson(Stringtype)(Personperson=null;if("M"))(person=newManPerson();}elseif("W"))(person=newWomanPerson();}returnperson;}}publicclassClient(publicstaticvoidmain(String[]args)(Personperson;person=("W");();}}(簡(jiǎn)單工廠方法)使用簡(jiǎn)單工廠方法模式設(shè)計(jì)一個(gè)可以創(chuàng)建一個(gè)不同幾何形狀,如圓形、矩形、三角形等繪圖工具類,每個(gè)幾何圖形均具有繪制、擦除兩個(gè)方法,要求在繪制不支持的集合圖形時(shí),拋出一個(gè)異常,繪制類圖并使用JAVA語(yǔ)言編程模擬實(shí)現(xiàn)。類似上面(工廠方法模式)寶馬(BMW)工廠制造寶馬汽車,奔馳(Benz)H廠制造奔馳汽車。使用工廠方法模式模擬場(chǎng)景,要求繪制相應(yīng)的類圖,并用JAVA語(yǔ)言編程模擬實(shí)現(xiàn)publicinterfaceCreator(publicProductfactory();}publicclassBMWCreatorimplementsCreator(publicProductfactory()(returnnewBMWProduct();}}publicclassBenzCreatorimplementsCreator(publicProductfactory()(returnnewBenzProduct();}}publicinterfaceProduct(}publicclassBenzProductimplementsProduct(publicvoidBenzProduct(){"奔馳被創(chuàng)造");}}publicclassBMWProductimplementsProduct{publicvoidBMWProduct(){”寶馬被創(chuàng)造”);}}publicclassClient{publicstaticCreatorc1,c2;publicstaticProductp1,p2;publicstaticvoidmain(String[]args){cl=newBenzCreator();pl=();c2=newBenzCreator();p2=();}}(工廠方法模式)某數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)中,曲線圖創(chuàng)建器生成曲線圖,柱狀圖創(chuàng)建器生成柱狀圖。試用工廠方法模式設(shè)計(jì)該系統(tǒng),要求繪制相應(yīng)的類圖,并用JAVA語(yǔ)言編程模擬實(shí)現(xiàn)。類似(原型模式)為某銷售系統(tǒng)設(shè)計(jì)一個(gè)客戶類Customer,在客戶類中包含一個(gè)名為客戶地址的成員變量,客戶地址的類型為Address,用淺克隆和深克隆分別實(shí)現(xiàn)Customer對(duì)象的復(fù)制,并比較兩種方式的異同。(單例模式)某軟件公司開發(fā)人員要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)庫(kù)連接池將指定個(gè)數(shù)(如兩個(gè)或3個(gè))數(shù)據(jù)庫(kù)連接對(duì)象存儲(chǔ)在連接池中,客戶端代碼可以從池中隨機(jī)取一個(gè)連接對(duì)象來(lái)連接數(shù)據(jù)庫(kù),試通過(guò)對(duì)單例類進(jìn)行改造,設(shè)計(jì)一個(gè)能夠自行提供滴定個(gè)數(shù)實(shí)例對(duì)象的數(shù)據(jù)庫(kù)連接類并用JAVA語(yǔ)言編程模擬實(shí)現(xiàn)。(觀察者模式“貓Cat大叫一聲,老鼠Mouse開始逃跑,主人Master被驚醒”。這個(gè)過(guò)程蘊(yùn)含了哪種設(shè)計(jì)模式要求繪制相應(yīng)的類圖,并用JAVA語(yǔ)言編程模擬實(shí)現(xiàn)。(命令模式)房間中的開關(guān)就是命令模式的一個(gè)實(shí)現(xiàn),試用命令模式來(lái)模擬開關(guān)的功能,可控制對(duì)象包括電燈和電風(fēng)扇,繪制相應(yīng)的類圖并使用JAVA語(yǔ)言編程模擬。publicabstractclassAbstractcommand(publicabstractvoidopen();publicabstractvoidclose();}publicclassSwitch(privateAbstractCommandabstractCommand;publicvoidsetComman(AbstractCommandabstractCommand)(=abstractCommand;}publicvoidopen()(();}publicvoidclose()(();}}publicclassFunCommandextendsAbstractCommand(privateFunfun=newFun();publicvoidopen()(();}publicvoidclose()(();}publicclassLightCommandextendsAbstractcommand(privateLightlight=newLight();publicvoidopen()(();}publicvoidclose()(();}}publicclassFun(publicvoidopen()(”開風(fēng)剝);}publicvoidclose()(”關(guān)風(fēng)剝);}}publicclassLight(publicvoidopen()("開燈”);}publicvoidclose()("關(guān)燈”);}}publicclassClient(publicstaticvoidmain(String[]args)(Switchs=newSwitch();AbstractCommandac;ac=(AbstractCommand)();(ac);();();}}publicclasspublicclassClient(publicstaticvoidmain(String[]args)(Switchs=newSwitch();Abstractcommandac;ac=(AbstractCommand)();(ac);();();}}(publicstaticvo
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度國(guó)際技術(shù)貿(mào)易合同英文翻譯與合同違約責(zé)任界定
- 菏澤2024年山東菏澤東明縣縣直事業(yè)單位引進(jìn)高層次急需緊缺人才33人筆試歷年參考題庫(kù)附帶答案詳解
- 荊州2025年湖北石首市企事業(yè)單位人才引進(jìn)64人筆試歷年參考題庫(kù)附帶答案詳解
- 汕頭2024年下半年廣東汕頭市金平區(qū)區(qū)屬學(xué)校招聘69人筆試歷年參考題庫(kù)附帶答案詳解
- 2025年中國(guó)三基色燈管市場(chǎng)調(diào)查研究報(bào)告
- 2025至2031年中國(guó)銀扁絲行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年盒裝式警示帶項(xiàng)目可行性研究報(bào)告
- 成都四川成都市青白江區(qū)機(jī)關(guān)事業(yè)單位編外人員招聘2人筆試歷年參考題庫(kù)附帶答案詳解
- 2025至2031年中國(guó)彩色高解煙感攝像機(jī)行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國(guó)天文鐘燈行業(yè)投資前景及策略咨詢研究報(bào)告
- GB/T 45177-2024人工光型植物工廠光環(huán)境技術(shù)規(guī)范
- 2025年中考語(yǔ)文模擬試卷(含答案解析)
- 2024-2025年天津河西區(qū)七年級(jí)上學(xué)期期末道德與法治試題(含答案)
- 新HSK一至六級(jí)詞匯表
- MES運(yùn)行管理辦法
- 中藥炮制學(xué)教材
- 現(xiàn)場(chǎng)快速反應(yīng)跟蹤管理看板
- 常見(jiàn)腫瘤AJCC分期手冊(cè)第八版(中文版)
- 電氣第一種第二種工作票講解pptx課件
- 英國(guó)簽證戶口本翻譯模板(共4頁(yè))
- 企業(yè)公司行政人事管理組織架構(gòu)圖帶照片
評(píng)論
0/150
提交評(píng)論