軟件體系結(jié)構(gòu)與設(shè)計(jì)模式期末復(fù)習(xí)_第1頁
軟件體系結(jié)構(gòu)與設(shè)計(jì)模式期末復(fù)習(xí)_第2頁
軟件體系結(jié)構(gòu)與設(shè)計(jì)模式期末復(fù)習(xí)_第3頁
軟件體系結(jié)構(gòu)與設(shè)計(jì)模式期末復(fù)習(xí)_第4頁
軟件體系結(jié)構(gòu)與設(shè)計(jì)模式期末復(fù)習(xí)_第5頁
已閱讀5頁,還剩86頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)用標(biāo)準(zhǔn)實(shí)用標(biāo)準(zhǔn)文案大全文案大全體系結(jié)構(gòu)期末復(fù)習(xí)選擇題.設(shè)計(jì)模式的基本原理是(C)A.面向?qū)崿F(xiàn)編程 B.面向?qū)ο缶幊藽.面向接口編程 D.面向組合編程.設(shè)計(jì)模式的兩大主題是(D )A.系統(tǒng)的維護(hù)與開發(fā)B.對(duì)象組合與類的繼承C.系統(tǒng)架構(gòu)與系統(tǒng)開發(fā)D.系統(tǒng)復(fù)用與系統(tǒng)擴(kuò)展.依據(jù)設(shè)計(jì)模式思想,程序開發(fā)中應(yīng)優(yōu)先使用的是(A )關(guān)系實(shí)現(xiàn)復(fù)用。A.組合聚合B.繼承 C.創(chuàng)建D.以上都不對(duì).關(guān)于繼承表述錯(cuò)誤的是(D )A.繼承是一種通過擴(kuò)展一個(gè)已有對(duì)象的實(shí)現(xiàn),從而獲得新功能的復(fù)用方法。B.泛化類(超類)可以顯式地捕獲那些公共的屬性和方法。特殊類(子類)則通過附加屬性和方法來進(jìn)行實(shí)現(xiàn)的擴(kuò)展。C.破壞了封裝性,因

2、為這會(huì)將父類的實(shí)現(xiàn)細(xì)節(jié)暴露給子類。D.繼承本質(zhì)上是“白盒復(fù)用”D.繼承本質(zhì)上是“白盒復(fù)用”5.常用的設(shè)計(jì)模式可分為(A)A.創(chuàng)建型、結(jié)構(gòu)型和行為型C.過程型、創(chuàng)建型和結(jié)構(gòu)型,對(duì)父類的修改,不會(huì)影響到子類。B.對(duì)象型、結(jié)構(gòu)型和行為型D.抽象型、接口型和實(shí)現(xiàn)型. “不要和陌生人說話”是對(duì)(D )設(shè)計(jì)原則的通俗表述。A.接口隔離 B.里氏代換C.依賴倒轉(zhuǎn)D.迪米特法則.在適配器模式中,對(duì)象適配器模式是對(duì)(A )設(shè)計(jì)原則的典型應(yīng)用A.合成聚合B.里氏代換C.依賴倒轉(zhuǎn)D.迪米特法則8.將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另一個(gè)接口,這句話是對(duì)(A.合成聚合B.里氏代換C.依賴倒轉(zhuǎn)D.迪米特法則8.將一個(gè)類的接

3、口轉(zhuǎn)換成客戶希望的另一個(gè)接口,這句話是對(duì)(C)設(shè)計(jì)模式的描述A.策略模式 B.橋接模式C.適配器模式D.單例模式.以下設(shè)計(jì)模式中屬于結(jié)構(gòu)模式的是(D )A.觀察者模式B.單例模式A.觀察者模式B.單例模式C.策略模式D.外觀模式.以下不屬于對(duì)象行為型模式是(D )A.命令模式B.策略模式A.命令模式B.策略模式C.訪問者模式D.橋接模式.下面的類圖表示的是哪個(gè)設(shè)計(jì)模式(D )A.抽象工廠模式B.觀察者模式C.A.抽象工廠模式B.觀察者模式C.策略模式D.橋接模式. Open-Close開閉原則的含義是一個(gè)軟件實(shí)體(A )A.應(yīng)當(dāng)對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。A.應(yīng)當(dāng)對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。B.應(yīng)當(dāng)對(duì)

4、修改開放,對(duì)擴(kuò)展關(guān)閉。C.應(yīng)當(dāng)對(duì)繼承開放,對(duì)修改關(guān)閉。C.應(yīng)當(dāng)對(duì)繼承開放,對(duì)修改關(guān)閉。D.以上都不對(duì)。.下面的類圖表示的是哪個(gè)設(shè)計(jì)模式A.策略模式B.裝飾模式C.A.策略模式B.裝飾模式C.橋接模式D.觀察者模式.保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。這句話是對(duì)(D )設(shè)計(jì)模式的描述。A.外觀模式B.策略模式C.適配器模式D.單例模式.以下意圖哪個(gè)是用來描述組合模式?( C )A.為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。B.運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象。C.將對(duì)象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。D.將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離。.以下意圖哪個(gè)

5、是用來描述命令模式?( A )A.將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而使你可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化。B.定義一系列的算法,把它們一個(gè)個(gè)封裝起來,并且使它們可相互替換。C.為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。D.保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。.以下哪種情況不適合使用適配器模式?( D )A.你想使用一個(gè)已經(jīng)存在的類,而它的接口不符合你的需求。B.你想創(chuàng)建一個(gè)類,該類可以復(fù)用另外一個(gè)類的功能。C.你想創(chuàng)建一個(gè)類,該類可以復(fù)用另外多個(gè)類的功能。D.你想在類中用相對(duì)較少的對(duì)象引用取代很多對(duì)象的引用。.以下意圖哪個(gè)是用來描述觀察者模式?( B )A.將抽象部分與它的實(shí)現(xiàn)

6、部分分離,使它們都可以獨(dú)立地變化。B.定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí) ,所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新。C.用原型實(shí)例指定創(chuàng)建對(duì)象的種類,并且通過拷貝這些原型創(chuàng)建新的對(duì)象。D.使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,避免請(qǐng)求的發(fā)送者和接收者之間的耦合關(guān)系。.以下意圖哪個(gè)是用來描述狀態(tài)模式?( C )A.使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,避免請(qǐng)求的發(fā)送者和接收者之間的耦合關(guān)系。B.順序訪問一個(gè)聚合對(duì)象中各個(gè)元素 ,而又不需暴露該對(duì)象的內(nèi)部表示。C.允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為??雌饋硭坪跣薷牧怂念?。D.捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài)。.以

7、下意圖哪個(gè)是用來描述策略模式?( D )A.將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。B.將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離。C.將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。D.定義一系列的算法,把它們一個(gè)個(gè)封裝起來,并且使它們可相互替換。12345678910CDADADACDD11121314151617181920DADDCADBCD.要依賴于抽象,不要依賴于具體。即針又接口編程,不要針對(duì)實(shí)現(xiàn)編程,是(D )A.開閉原則 B.接口隔離原則C.里氏代換原則D.依賴倒轉(zhuǎn)原則.以下對(duì)開-閉”原則的一些描述錯(cuò)誤的是 (A)A.開-閉原則與對(duì)可變性的封裝原則沒有相似性。B.找

8、到一個(gè)系統(tǒng)的可變?cè)?,將它封裝起來,叫開-閉原則。C.對(duì)修改關(guān)閉:是其原則之一。D.從抽象層導(dǎo)出一個(gè)或多個(gè)新的具體類可以改變系統(tǒng)的行為,是其原則之一。.依據(jù)設(shè)計(jì)模式思想,程序開發(fā)中應(yīng)優(yōu)先使用的是(B)關(guān)系實(shí)現(xiàn)復(fù)用。4.A.繼承B.組合聚合C.4.A.繼承B.組合聚合C.創(chuàng)建D.以上都不對(duì)設(shè)計(jì)模式的兩大主題是(C)A.系統(tǒng)的維護(hù)與開發(fā)A.系統(tǒng)的維護(hù)與開發(fā)B.對(duì)象組合與類的繼承C.系統(tǒng)復(fù)用與系統(tǒng)擴(kuò)展C.系統(tǒng)復(fù)用與系統(tǒng)擴(kuò)展D.系統(tǒng)架構(gòu)與系統(tǒng)開發(fā).常用的設(shè)計(jì)模式可分為(C).常用的設(shè)計(jì)模式可分為(C)A.過程型、創(chuàng)建型和結(jié)構(gòu)型C.創(chuàng)建型、結(jié)構(gòu)型和行為型B.對(duì)象型、結(jié)構(gòu)型和行為型D.抽象型、接口型和實(shí)現(xiàn)

9、型. “知道的越少越好”是對(duì)(D )設(shè)計(jì)原則的通俗表述。A.接口隔離A.接口隔離B.里氏代換7.在適配器模式中,對(duì)象適配器模式是對(duì)A.合成聚合B.里氏代換C.依賴倒轉(zhuǎn)D.迪米特法則(A )設(shè)計(jì)原則的典型應(yīng)用C.依賴倒轉(zhuǎn)D.迪米特法則.觀察者模式定義了一種(A )的依賴關(guān)系A(chǔ). A. 一對(duì)多 B.多對(duì)多 C. 一對(duì)一D.以上都不對(duì).以下設(shè)計(jì)模式中不屬于創(chuàng)建型模式的是(B )A.工廠模式B.A.工廠模式B.外觀模式C.生成器模式D.單例模式.以下不屬于結(jié)構(gòu)型模式是(C )A.組合模式B.A.組合模式B.適配器模式C.訪問者模式D.橋接模式.以下不屬于行為型模式是(B )A.迭代器模式B.A.迭代器

10、模式B.外觀模式C.狀態(tài)模式D.策略模式C)設(shè)計(jì)模式的描述C)設(shè)計(jì)模式的描述A.策略模式B.橋接模式 C.適配器模式D.單例模式.下面的類圖表示的是哪個(gè)設(shè)計(jì)模式(C )A.策略模式A.策略模式B.裝飾模式C.適配器模式D.觀察者模式.下面的類圖表示的是哪個(gè)設(shè)計(jì)模式(B )A.橋接模式B.組合模式C.命令模式D.觀察者模式.保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。這句話是對(duì)(D )設(shè)計(jì)模式的描述。A.外觀模式B.策略模式C.適配器模式D.單例模式.以下哪項(xiàng)不是橋接模式的優(yōu)點(diǎn)?( C )A.分離接口及其實(shí)現(xiàn)部分。B.提高可擴(kuò)充性。C.改變值以指定新對(duì)象。D.實(shí)現(xiàn)細(xì)節(jié)對(duì)客戶透明。.在觀

11、察者模式中,表述錯(cuò)誤的是?( C )A.觀察者角色的更新是被動(dòng)的。B.被觀察者可以通知觀察者進(jìn)行更新。C.觀察者可以改變被觀察者的狀態(tài),再由被觀察者通知所有觀察者依據(jù)被觀察者的狀 態(tài)進(jìn)行。D.以上表述全部錯(cuò)誤。.當(dāng)我們想創(chuàng)建一個(gè)具體的對(duì)象而又不希望指定具體的類時(shí),可以使用(A )模式A.創(chuàng)建型B.結(jié)構(gòu)型 C.行為型D.以上都不對(duì).以下意圖哪個(gè)是用來描述狀態(tài)模式?( C )A.使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,避免請(qǐng)求的發(fā)送者和接收者之間的耦合關(guān)系。B.順序訪問一個(gè)聚合對(duì)象中各個(gè)元素,而又不需暴露該對(duì)象的內(nèi)部表示。C.允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為??雌饋硭坪跣薷牧怂念?。D.捕獲一個(gè)對(duì)象

12、的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài)。.以下意圖哪個(gè)是用來描述組合模式?( C )A.為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。B.運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象。C.將對(duì)象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。D.將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離。12345678910DABCCDAABC11121314151617181920BCCBDCCACC.常用的設(shè)計(jì)模式可分為(A )B.對(duì)象型、結(jié)構(gòu)型和行為型D.B.對(duì)象型、結(jié)構(gòu)型和行為型D.抽象型、接口型和實(shí)現(xiàn)型C.過程型、創(chuàng)建型和結(jié)構(gòu)型. “不要和陌生人說話”是對(duì)(D )設(shè)計(jì)原則的通俗表述。A.接口隔離B.里氏代換C.依

13、賴倒轉(zhuǎn)A.接口隔離B.里氏代換C.依賴倒轉(zhuǎn)D.迪米特法則3.在適配器模式中,對(duì)象適配器模式是對(duì)(A)設(shè)計(jì)原則的典型應(yīng)用A.合成聚合A.合成聚合B.里氏代換C.依賴倒轉(zhuǎn)D.迪米特法則C)設(shè)計(jì)模式的描述.C)設(shè)計(jì)模式的描述A.策略模式B.橋接模式 C.適配器模式D.單例模式.以下設(shè)計(jì)模式中屬于結(jié)構(gòu)模式的是(D )A.觀察者模式A.觀察者模式B.單例模式C.迭代器模式D.適配器模式.以下意圖哪個(gè)是用來描述命令模式?( A )A.將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而使你可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化。B.定義一系列的算法,把它們一個(gè)個(gè)封裝起來,并且使它們可相互替換。C.為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象

14、的訪問。D.保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。.下面的類圖表示的是哪個(gè)設(shè)計(jì)模式(D )A.抽象工廠模式B.橋接模式C.狀態(tài)模式D.適配器模式圖1. Open-Close 開閉原則的含義是一個(gè)軟件實(shí)體(A )A.應(yīng)當(dāng)對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。.應(yīng)當(dāng)對(duì)修改開放,對(duì)擴(kuò)展關(guān)閉。C.應(yīng)當(dāng)對(duì)繼承開放,對(duì)修改關(guān)閉。D.以上都不對(duì)。.以下意圖哪個(gè)是用來描述組合模式?( C )A.為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。B.運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象。C.將對(duì)象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。D.將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離。.以下意圖哪個(gè)是用來描述狀態(tài)模

15、式?( C )A.使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,避免請(qǐng)求的發(fā)送者和接收者之間的耦合關(guān)系。B.順序訪問一個(gè)聚合對(duì)象中各個(gè)元素,而又不需暴露該對(duì)象的內(nèi)部表示。C.允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為。看起來似乎修改了它的類。D.捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài)。12345678910ADACDADACC(四).當(dāng)我們想創(chuàng)建一個(gè)具體的對(duì)象而又不希望指定具體的類時(shí),可以使用(A )模式A.創(chuàng)建型B.結(jié)構(gòu)型 C.行為型D.以上都不對(duì).以下對(duì)開-閉”原則的一些描述錯(cuò)誤的是 (A )A.開-閉原則與對(duì)可變性的封裝原則沒有相似性。B.找到一個(gè)系統(tǒng)的可變?cè)?,將它封裝起來,叫開-閉原則。C

16、.對(duì)修改關(guān)閉:是其原則之一。D.從抽象層導(dǎo)出一個(gè)或多個(gè)新的具體類可以改變系統(tǒng)的行為,是其原則之一。.依據(jù)設(shè)計(jì)模式思想,程序開發(fā)中應(yīng)優(yōu)先使用的是(B )關(guān)系實(shí)現(xiàn)復(fù)用。A.繼承B.組合聚合 C.創(chuàng)建D.以上都不對(duì). “知道的越少越好”是對(duì)(D )設(shè)計(jì)原則的通俗表述。A.接口隔離B.里氏代換C.依賴倒轉(zhuǎn)D.迪米特法則.在適配器模式中,對(duì)象適配器模式是對(duì)(A )設(shè)計(jì)原則的典型應(yīng)用A.合成聚合B.里氏代換C.依賴倒轉(zhuǎn)D.迪米特法則.保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。這句話是對(duì)(D)設(shè)計(jì)模式的描述。A.外觀模式B.策略模式C.適配器模式D.單例模式.以下意圖哪個(gè)是用來描述策略模式?(

17、D )A.將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。.將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離。C.將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。D.定義一系列的算法,把它們一個(gè)個(gè)封裝起來,并且使它們可相互替換。.以下不屬于結(jié)構(gòu)型模式是(C )A.組合模式B.適配器模式C.訪問者模式D.橋接模式下面的類圖表示的是哪個(gè)設(shè)計(jì)模式(D )B.狀態(tài)模式D.橋接模式B.狀態(tài)模式D.橋接模式C.適配器模式.以下意圖哪個(gè)是用來描述狀態(tài)模式?( C )A.使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,避免請(qǐng)求的發(fā)送者和接收者之間的耦合關(guān)系。B.順序訪問一個(gè)聚合對(duì)象中各個(gè)元素,而又不需暴露該對(duì)象的內(nèi)部表示。C.允許

18、一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為??雌饋硭坪跣薷牧怂念悺.捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài)。12345678910AABDADDCDC(五)1.常用的設(shè)計(jì)模式可分為(A)A.創(chuàng)建型、結(jié)構(gòu)型和行為型A.創(chuàng)建型、結(jié)構(gòu)型和行為型B.對(duì)象型、結(jié)構(gòu)型和行為型C.過程型、創(chuàng)建型和結(jié)構(gòu)型C.過程型、創(chuàng)建型和結(jié)構(gòu)型D.抽象型、接口型和實(shí)現(xiàn)型2.“不要和陌生人說話”是對(duì)(D )設(shè)計(jì)原則的通俗表述。.A.接口隔離B.里氏代換C.依賴倒轉(zhuǎn)D.迪米特法則在適配器模式中,對(duì)象適配器模式是對(duì)(A )設(shè)計(jì)原則的典型應(yīng)用A.合成聚合B.里氏代換C.依賴倒轉(zhuǎn)D.2.“不要和陌生人說話”

19、是對(duì)(D )設(shè)計(jì)原則的通俗表述。.A.接口隔離B.里氏代換C.依賴倒轉(zhuǎn)D.迪米特法則在適配器模式中,對(duì)象適配器模式是對(duì)(A )設(shè)計(jì)原則的典型應(yīng)用A.合成聚合B.里氏代換C.依賴倒轉(zhuǎn)D.迪米特法則將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另一個(gè)接口 ,這句話是對(duì)(C)設(shè)計(jì)模式的描述A.策略模式B.橋接模式C.適配器模式D.單例模式以下設(shè)計(jì)模式中屬于結(jié)構(gòu)模式的是(D )A.觀察者模式B.單例模式C.迭代器模式D.適配器模式以下意圖哪個(gè)是用來描述命令模式?( A)A.將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而使你可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化。B.定義一系列的算法,把它們一個(gè)個(gè)封裝起來,并且使它們可相互替換。

20、C.為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。D.保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。.下面的類圖表示的是哪個(gè)設(shè)計(jì)模式(D )A.抽象工廠模式B.橋接模式C.狀態(tài)模式D.適配器模式圖1. Open-Close 開閉原則的含義是一個(gè)軟件實(shí)體(A )A.應(yīng)當(dāng)對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。.應(yīng)當(dāng)對(duì)修改開放,對(duì)擴(kuò)展關(guān)閉。C.應(yīng)當(dāng)對(duì)繼承開放,對(duì)修改關(guān)閉。D.以上都不對(duì)。.以下意圖哪個(gè)是用來描述組合模式?( C )A.為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。B.運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象。C.將對(duì)象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。D.將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它

21、的表示分離。.以下意圖哪個(gè)是用來描述狀態(tài)模式?( C )A.使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,避免請(qǐng)求的發(fā)送者和接收者之間的耦合關(guān)系。B.順序訪問一個(gè)聚合對(duì)象中各個(gè)元素,而又不需暴露該對(duì)象的內(nèi)部表示。C.允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為。看起來似乎修改了它的類。D.捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài)。12345678910ADACDADACC、填空題.面向?qū)ο蟮钠邨l設(shè)計(jì)原則包括:?jiǎn)我宦氊?zé)原則, 合成聚合原則,接口隔離原則以及 其中外觀模式是 原則的典型應(yīng)用。.工廠模式中分為 工廠方法,三種模式。其中,可以應(yīng)用平行等級(jí)結(jié)構(gòu)完成創(chuàng)建工作的模式是 摸式。.適配器模式,可以細(xì)分為適

22、配器和 適配器兩種實(shí)現(xiàn)。其中適配器采用的是繼承復(fù)用,而 適配器采用的是合成聚合復(fù)用。. Java API中,有兩個(gè)與觀察者模式相關(guān)的類和接口,分別是 Observable 和Observer ,Observer 的Update 函數(shù)中用到的兩個(gè)參數(shù)的參數(shù)類型是 和.事件體系結(jié)構(gòu)中的三個(gè)基本角色包括事件源、 其中在編程時(shí)一定要將 注冊(cè)添加到事件源中。.單例模式有兩種方式實(shí)現(xiàn),分別為 它們共同的特征是構(gòu)造函數(shù)的訪問屬性必須是 答案:1、開閉原則里氏代換原則依賴倒轉(zhuǎn)原則 迪米特法則迪米特法則2、簡(jiǎn)單工廠抽象工廠工廠方法3、類 對(duì)象類 對(duì)象4、Observable Object 5、事件事件監(jiān)聽者事件

23、監(jiān)聽者 6、俄漢式 懶漢式私有(private).面向?qū)ο蟮钠邨l設(shè)計(jì)原則包括: 開閉原則,依賴倒轉(zhuǎn)原則, 接口隔離原則以及 其中外觀模式是 原則的典型應(yīng)用。.工廠模式中分為簡(jiǎn)單工廠,三種模式。其中,可以應(yīng)用平行等級(jí)結(jié)構(gòu)完成創(chuàng)建工作的模式是 摸式。.適配器模式,可以細(xì)分為適配器和 適配器兩種實(shí)現(xiàn)。其中適配器采用的是繼承復(fù)用,而 適配器采用的是合成聚合復(fù)用。. Java API中,有兩個(gè)與觀察者模式相關(guān)的類和接口,分別是 Observable 和Observer ,Observer 的Update函數(shù)中用到的兩個(gè)參數(shù)的參數(shù)類型是 和.事件體系結(jié)構(gòu)中的三個(gè)基本角色包括 .單例模式有兩種方式實(shí)現(xiàn),分別

24、為 其中 能夠?qū)崿F(xiàn)類被加載時(shí)就同時(shí)生成類的實(shí)例。答案:1、單一職責(zé)原則里氏代換原則合成聚合原則迪米特法則迪米特法則2、工廠方法抽象工廠工廠方法3、類 對(duì)象類 對(duì)象4、Observable Object5、事件源事件事件監(jiān)聽者6、俄漢式 懶漢式餓漢式.面向?qū)ο蟮钠邨l設(shè)計(jì)原則包括: 單一職責(zé)原則,里氏代換原則,合成聚合原則,接口隔離原則以及 .工廠模式中分為簡(jiǎn)單工廠 ,和三種模式。. Java API中,有兩個(gè)與觀察者模式相關(guān)的類和接口,分別是和.單例模式有兩種方式實(shí)現(xiàn),分別稱為 它們共同的特征是構(gòu)造函數(shù)的訪問修飾符必須是 答案:1、開閉原則、依賴倒轉(zhuǎn)原則、迪米特法則2、工廠方法、 抽象工廠(方法

25、)3、Observable 、 Observer4、懶漢式、餓漢式 、private(私有的)(四).面向?qū)ο蟮钠邨l設(shè)計(jì)原則包括: 開閉原則,依賴倒轉(zhuǎn)原則,接口隔離原則以及 .適配器模式,可以細(xì)分為適配器和 適配器兩種實(shí)現(xiàn)。其中適配器采用的是繼承復(fù)用。.能夠定義對(duì)象間的一種“一對(duì)多”的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)改變,所有依賴于它的對(duì)象都能得到通知并自動(dòng)更新的設(shè)計(jì)模式的名稱是 .單例模式中能夠?qū)崿F(xiàn)延時(shí)加載的方式,稱為 寡現(xiàn)即時(shí)加載的方式稱為O答案:.單一職責(zé)原則、里氏代換原則 、合成聚合原則、迪米特法則.類、對(duì)象、類.觀察者模式. 懶漢式、餓漢式(五).面向?qū)ο蟮钠邨l設(shè)計(jì)原則包括:?jiǎn)我宦氊?zé)原則,

26、里氏代換原則,合成聚合原則,接口隔離原則以及 .工廠模式中分為簡(jiǎn)單工廠 ,和三種模式。.適配器模式,可以細(xì)分為 適配器和 .單例模式有兩種方式實(shí)現(xiàn),分別稱為 它們共同的特征是構(gòu)造函數(shù)的訪問修飾符必須是 答案:.開閉原則、依賴倒轉(zhuǎn)原則、迪米特法則.工廠方法、抽象工廠(方法)3、類、對(duì)象、懶漢式、餓漢式 、private(私有的)三、判斷題(一).開閉原則的關(guān)鍵是抽象化。.在軟件開發(fā)中,如果要實(shí)現(xiàn)復(fù)用,應(yīng)盡量較多使用繼承,較少使用合成聚合的方式。.當(dāng)一個(gè)對(duì)象的行為取決于它所處的狀態(tài)時(shí),這時(shí)我們應(yīng)該使用橋接模式.適配器模式是一種創(chuàng)建型設(shè)計(jì)模式. MVC結(jié)構(gòu)中模型和視圖之間交互的實(shí)現(xiàn)可以基于觀察者模式

27、,其中模型是被觀察者。答案:1. V 2. X 3. X 4. X 5. V.設(shè)計(jì)模式的基本原理是面向?qū)崿F(xiàn)編程。.在軟件開發(fā)中,如果要實(shí)現(xiàn)復(fù)用,應(yīng)盡量較多使用繼承,較少使用合成聚合的方式。.當(dāng)一個(gè)對(duì)象的行為取決于它所處的狀態(tài)時(shí),這時(shí)我們應(yīng)該使用狀態(tài)模式.適配器模式是一種創(chuàng)建型設(shè)計(jì)模式. MVC結(jié)構(gòu)中模型和視圖之間交互的實(shí)現(xiàn)可以基于觀察者模式,其中模型是被觀察者。答案:1. x 2. X 3. V 4. X 5. V(三).開閉原則的關(guān)鍵是抽象化。.在軟件開發(fā)中,如果要實(shí)現(xiàn)復(fù)用,應(yīng)盡量較多使用繼承,較少使用合成聚合的方式。.當(dāng)一個(gè)對(duì)象的行為取決于它所處的狀態(tài)時(shí),這時(shí)我們應(yīng)該使用橋接模式。.適配器

28、模式是一種創(chuàng)建型設(shè)計(jì)模式。.命令模式標(biāo)準(zhǔn)類圖中的Receiver不是必須存在的。答案:12345VXXXV(四).設(shè)計(jì)模式的基本原理是面向?qū)崿F(xiàn)編程。.在軟件開發(fā)中,如果要實(shí)現(xiàn)復(fù)用,應(yīng)盡量較多使用繼承,較少使用合成聚合的方式。.當(dāng)一個(gè)軟件需要實(shí)現(xiàn)操作可撤銷的功能時(shí),我們應(yīng)該使用命令模式。.迭代器模式是一種結(jié)構(gòu)型設(shè)計(jì)模式。.抽象工廠方法完全符合開閉模式。答案:12345XXVXX(五).開閉原則的關(guān)鍵是抽象化。.在軟件開發(fā)中,如果要實(shí)現(xiàn)復(fù)用,應(yīng)盡量較多使用繼承,較少使用合成聚合的方式。.當(dāng)一個(gè)對(duì)象的行為取決于它所處的狀態(tài)時(shí),這時(shí)我們應(yīng)該使用橋接模式。.適配器模式是一種創(chuàng)建型設(shè)計(jì)模式。.命令模式標(biāo)準(zhǔn)

29、類圖中的 Receiver不是必須存在的。答案:12345VXXXV四、簡(jiǎn)答題(一).假設(shè)系統(tǒng)中有三個(gè)類,分別為類 A、類B和類Co在現(xiàn)有的設(shè)計(jì)中,讓類 A直接依賴類 B,如果要將類A改為依賴類C,必須通過修改類 A的代碼來達(dá)成,請(qǐng)問這樣的設(shè)計(jì)符合開閉原則嗎(2分)?如果符合,請(qǐng)依據(jù)開閉原則進(jìn)行解釋, 如果不符合請(qǐng)給出重構(gòu)的方法 (3 分)。.假設(shè)某一軟件系統(tǒng)中存在類 A,B,C,D,E。請(qǐng)分別畫出使用這些類的中介者模式類圖及外觀模式類圖。.假如系統(tǒng)中存在一組具有相同結(jié)構(gòu)的產(chǎn)品類,如圖所示,如果要?jiǎng)?chuàng)建具體產(chǎn)品對(duì)象, TOC o 1-5 h z 應(yīng)該使用哪一種創(chuàng)建模式? (2分)根據(jù)給出的類圖,

30、繪制出產(chǎn)品等級(jí)和產(chǎn)品族的圖示。(3分)根據(jù)產(chǎn)品族圖示,繪制工廠類的層次結(jié)構(gòu)圖(必須寫清類的方法)。(4分)答案: 目前的設(shè)計(jì)不符合開閉原則(2分) 重構(gòu)問題:新建接口 I,使得類A依賴于接口 I ,而類B和C實(shí)現(xiàn)接口 I。(或相同概念的表述)(3分)中介者模式類圖(4中介者模式類圖(4分)外觀模式類圖(4分)1 )應(yīng)該使用抽象工廠模式(2分)2)產(chǎn)品等級(jí)和產(chǎn)品族的圖示 (3分)工廠類圖(4分,不對(duì)類名和方法名做限制,能夠正確表達(dá)含義即可):接口 AAbstractF ac toryPKikeChipO仝一Intel Fact orvI inakeChipf) H-n)akeCPH()niukc

31、Chip()I inakeChipf) H-n)akeCPH()niukcChip()-insikeC. FU().簡(jiǎn)述開閉原則、依賴倒轉(zhuǎn)原則的定義。.簡(jiǎn)述策略模式的應(yīng)用場(chǎng)景(3分),并繪制策略模式的類圖(3分)。.假如要用軟件實(shí)現(xiàn)自動(dòng)茶水銷售機(jī)的功能,茶水的價(jià)格取決于茶的品種和杯子的大小。請(qǐng)回答以下問題, TOC o 1-5 h z 1)應(yīng)該使用哪一種模式? (2分)2)請(qǐng)繪制該模式的類圖。(4分)答案:開閉原則:一個(gè)軟件實(shí)體,應(yīng)該對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉(3分)依賴倒轉(zhuǎn)原則:高層模塊不應(yīng)該依賴于低層模塊,它們都應(yīng)該依賴抽象。(3分)1)策略模式的應(yīng)用場(chǎng)景:當(dāng)解決一個(gè)問題,有很多種方法或解決方

32、案可以使用時(shí),可以將每一種方法或解決方案封裝成一個(gè)類,可以相互替換(或相同意義表達(dá),3分).2)類圖(3分)1 )應(yīng)該使用橋接模式(2分)2)類圖(4分,不對(duì)類名和方法名做限制,能夠正確表達(dá)含義即可).簡(jiǎn)述依賴倒轉(zhuǎn)原則的定義。.假如系統(tǒng)中存在一組具有相同結(jié)構(gòu)的產(chǎn)品類,如圖所示,如果要?jiǎng)?chuàng)建具體產(chǎn)品對(duì)象, TOC o 1-5 h z 1)應(yīng)該使用哪一種創(chuàng)建模式? (2分)2)根據(jù)給出的類圖,繪制出產(chǎn)品等級(jí)和產(chǎn)品族的圖示。(4分)3)根據(jù)產(chǎn)品族圖示,繪制工廠類的層次結(jié)構(gòu)圖(必須寫清類的方法)。(4分)答案:1.高層模塊不應(yīng)該依賴低層模塊,它們都應(yīng)該依賴抽象(3分)。抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴

33、于抽象(3分)。2.1 )應(yīng)該使用抽象工廠模式(2分)2)產(chǎn)品等級(jí)和產(chǎn)品族的圖示 (4分)3)類圖(4分,不對(duì)類名和方法名做限制,能夠正確表達(dá)含義即可)Mv接口Ab struct FiictorvRinakeChipf)KmakeCPU()In lel FactoryAMDFactorv makcCh ip)makeCPUfi+maJ(eChip(HnakeCPU 什五、程序設(shè)(一)五、程序設(shè)(一)1.現(xiàn)在需要開發(fā)一中的Boss角色。角求:該Boss類可以計(jì)題款游戲軟件,請(qǐng)以單例模式來設(shè)計(jì)其色的屬性和動(dòng)作可以任意設(shè)計(jì)。要在多線程中使用。(8分). 一個(gè)農(nóng)場(chǎng)公司,專門負(fù)責(zé)培育各種水果,有葡萄,草

34、莓和蘋果,請(qǐng)使用工廠方法,編寫(8分)工廠類和主程序,并在主程序中來完成草莓生長(zhǎng)狀態(tài)的描述。(8分)在客戶端完成數(shù)據(jù)的展示。 具體要求如下:在客戶端完成數(shù)據(jù)的展示。 具體要求如下:.給定如圖所示的樹形結(jié)構(gòu),請(qǐng)應(yīng)用組合模式,繪制組合模式的類圖。(4分)編寫簡(jiǎn)單元素和復(fù)雜元素的代碼。(4分)1)在客戶端構(gòu)造出樹形數(shù)據(jù)并輸出。(4分)提示:程序運(yùn)行后,輸出信息應(yīng)為RootLeaf AComp BLeaf BXLeaf BYLeaf C答案:Public class BossPrivate static Boss instance; /(2 分)Private Boss() /(2 分)Public

35、static Boss getInstance() /(2 分)If(instance = null)Synchronized(Boss.Class) /(synchronized關(guān)鍵字,2 分)行(instance = null)Instance = new Boss();return instance;或者Public class BossPrivate static Boss instance = new Boss();/(4 分)Private Boss()/(2 分)Public static Boss getInstance()/2 分Return instance;Public

36、interface FactoryFruit build();Public class AppleFactory implements FactoryPublic Fruit build()Return new Apple();Public class GrapeFactory implements FactoryPublic Fruit build()Return new Grape();Public class StrawberryFactory implements FactoryPublic Fruit build()Return new Strawberry。;Public clas

37、s MainUIPublic static void main(string口 str)Factory fac = new StrawberryFactory();Fruit ft = fac.build();ft.plant();Ft.grow();Ft.harvest();1)類圖,類名不限,但必須將抽象的概念,以及Composite 和Component 之間的關(guān)系用正確的連線表示。(4分)2)簡(jiǎn)單元素、復(fù)雜元素(4分):class Leaf implements ComponentString name;public Leaf(String name) = name;

38、 public void display()System.out.println( name);public void add(Component c)public void remove(Component c)class Composite implements ComponentString name;ArrayList list = new ArrayList();public Composite(String name) = name;public void display()System.out.println(name);for(int i = 0 ; i li

39、st.size() ;i +)list.get(i).display();public void add(Component c)list.add(c); public void remove(Component c)list.remove(c);客戶端(4分):public class Test public static void main(String口 args)Component root = new Composite(Root);root.add(new Leaf(Leaf A);Component comp = new Composite(Comp B);root.add(co

40、mp);comp.add(new Leaf(Leaf BX);comp.add(new Leaf(Leaf BY);root.add(new Leaf(Leaf C);root.display();.現(xiàn)在需要開發(fā)一款打印機(jī)管理軟件,請(qǐng)以單例模式來設(shè)計(jì)其中的打印池PrintSpooler要求:該P(yáng)rintSpooler 類可以在多線程中使用。 (10分). 一個(gè)農(nóng)場(chǎng)公司,專門負(fù)責(zé)培育各種水果,有葡萄,草莓和蘋果,請(qǐng)使用簡(jiǎn)單工廠模式,編寫簡(jiǎn)單工廠類和主程序,并在主程序中來完成蘋果生長(zhǎng)狀態(tài)的描述。(10分).給定如圖所示的樹形結(jié)構(gòu),請(qǐng)應(yīng)用組合模式,在客戶端完成數(shù)據(jù)的展示。具體要求如下:.繪制組合模式

41、的類圖。(4分).編寫簡(jiǎn)單元素和復(fù)雜元素的代碼。(4分).在客戶端構(gòu)造出樹形數(shù)據(jù)并輸出。(4分)提示:程序運(yùn)行后,輸出信息應(yīng)為Dir1FilelDir2File3Dir3File4答案:分)(2分)(synchronized分)(2分)(synchronized關(guān)鍵字,2 分)Private static PrintSpooler instance; /(2Private PrintSpooler() /(2 分)Public static PrintSpooler getInstance() /If(instance = null)Synchronized(PrintSpooler.Clas

42、s) 行(instance = null)Instance = new PrintSpooler();2分 return instance;或者2.Public class PrintSpooler2.Private static PrintSpooler instance = new PrintSpooler(); /(4分)Private PrintSpooler() /(2 分) Public static PrintSpooler getInstance() /(2 分)return instance; /(2 分) 2.2.Public class FruitFactory /6 分

43、,要有靜態(tài)方法,返回 fruitPublic static Fruit creatFruit(String type)Fruit ft = null ;If(type.equals( Apple )Ft = new Apple();Else if(type.equals( Strawberry )Ft = new Strawberry();Else if(type.equals( Grape )Ft = new Grape();Return ft;Public class MainUI (4分)Public static void main(string口 str)Fruit ft = Fru

44、itFactory.creatFruit( Apple );ft.plant();Ft.grow();Ft.harvest();3.1)類圖,類名不限,但必須將抽象的概念,以及1)類圖,類名不限,但必須將抽象的概念,以及Composite 和Component 之間的關(guān)系用正確的連線表示。.簡(jiǎn)單元素、復(fù)雜元素(4分):class Leaf implements ComponentString name;public Leaf(String name) = name;public void display()System.out.println(name);public voi

45、d add(Component c)public void remove(Component c)class Composite implements ComponentString name;ArrayList list = new ArrayList();public Composite(String name) = name;public void display()System.out.println(name);for(int i = 0 ; i list.size() ;i +)list.get(i).display();public void add(Compo

46、nent c) list.add(c);public void remove(Component c) list.remove(c);.客戶端(4分):public class Test public static void main(String口 args)Component root = new Composite(Dir1);root.add(new Leaf(File1);Component comp = new Composite(Dir2);root.add(comp);comp.add(new Leaf(File3);Component comp = new Composite

47、(Dir3);root.add(comp);comp.add(new Leaf(File4);root.display();. 一個(gè)農(nóng)場(chǎng)公司,專門負(fù)責(zé)培育各種水果,有葡萄,草莓和蘋果,請(qǐng)使用簡(jiǎn)單工廠模式,編寫簡(jiǎn)單工廠類和主程序,并在主程序中來完成蘋果生長(zhǎng)狀態(tài)的描述。(8分).下圖是某系統(tǒng)的數(shù)據(jù)部分的類圖。因?yàn)樵搶哟谓Y(jié)構(gòu)中的操作需要經(jīng)常變化,所以需要用訪問者模式對(duì)其進(jìn)行重構(gòu),請(qǐng)按以下要求完成題目:(1 )繪制重構(gòu)后系統(tǒng)完整類圖。(4分)(2)給出重構(gòu)后 曰ementA 類的代碼。(4分)(3)在客戶端運(yùn)用訪問者模式,對(duì) ElementA 的實(shí)例,完成CalPrice操作。(2分)3.給定如圖所示

48、的樹形結(jié)構(gòu),3.給定如圖所示的樹形結(jié)構(gòu),繪制組合模式的類圖。(4分)2)編寫簡(jiǎn)單元素的代碼。(2分)3) 編寫復(fù)雜元素的代碼。(6分)4)編寫客戶端的代碼(4分) 提示:程序運(yùn)行后,輸出信息應(yīng)為Dir1FilelDir2File3Dir3File4答案:Public class FruitFactory 4要有靜態(tài)方法,返回 fruitPublic static Fruit creatFruit(String type)Fruit ft = null ;If(type.equals( Apple )Ft = new Apple();Else if(type.equals( Strawberry

49、 )Ft = new Strawberry。;Else if(type.equals( Grape )Ft = new Grape();Return ft;Public class MainUI (4分)Public static void main(string口 str)Fruit ft = FruitFactory.creatFruit( Apple );ft.plant();Ft.grow();Ft.harvest();1)類圖為(4分)ClientClientdnterfac eUi knr1GI 三E 三 nt*%;El 三 E三nW 3)blEle me nt AElemenlB

50、Print Data Victorvirlt &irtnE* IL iTrHnCBfE - iri,jriL9 bCflllPrlceVlstorwertt.營(yíng)m豈ntaEi豈m上n他息)_ll川任左i【m道b:class ElementA extends Element/4 分Public void accept(Visitor v)V.accept(this)3)客戶端2分Visitor v = new CalPriceVistor();ElementA a = new ElementA();A.accept(v);1)類圖,類名不限,但必須將抽象的概念,以及1)類圖,類名不限,但必須將抽

51、象的概念,以及Composite 和Component 之間的關(guān)系用正確的連線表示。2)簡(jiǎn)單元素(2分):class Leaf implements ComponentString name;public Leaf(String name) = name;public void display()System.out.println(name);3)復(fù)雜元素(6分)class Composite implements ComponentString name;ArrayList list = new ArrayList();public Composite(String na

52、me) = name;public void display()System.out.println(name);for(int i = 0 ; i list.size() ;i +)list.get(i).display();public void add(Component c) list.add(c);public void remove(Component c) list.remove(c);4)客戶端(4分):public class Test public static void main(String口 args)Component root = new Com

53、posite(Dir1);root.add(new Leaf(File1);Component comp = new Composite(Dir2);root.add(comp);comp.add(new Leaf(File3);Component comp = new Composite(Dir3);root.add(comp);comp.add(new Leaf(File4);root.display();六、詳情知識(shí)點(diǎn)面向?qū)ο笤O(shè)計(jì)原則:.單一職責(zé)原則:不要存在多于一個(gè)導(dǎo)致類變更的原因。通俗的說,即一個(gè) 類只負(fù)責(zé)一項(xiàng)職責(zé)。.開閉原則(重構(gòu))(抽象):一個(gè)軟件實(shí)體如類、模塊和函數(shù)應(yīng)該對(duì)擴(kuò)展開

54、放, 對(duì)修改關(guān)閉。.里氏代換原則:定義1 :如果對(duì)每一個(gè)類型為 T1的對(duì)象o1,都有類型為T2的對(duì)象o2 , 使得以T1定義的所有程序P在所有的對(duì)象o1都代換成o2時(shí),程序 P的行為沒有發(fā)生變化,那么類型T2是類型T1的子類型。定義2 :所有引用基類的地方必須能透明地使用其子類的對(duì)象。.依賴倒華$原則:高層模塊不應(yīng)該依賴低層模塊,二者都應(yīng)該依賴其抽象; 抽象不應(yīng)該依賴細(xì)節(jié);細(xì)節(jié)應(yīng)該依賴抽象。.迪米特法則(重構(gòu)、轉(zhuǎn)發(fā)、調(diào)用):迪米特法則(Law of Demeter )又叫作最少知識(shí)原則(Least Knowledge Principle 簡(jiǎn)寫LKP),就是說一 個(gè)對(duì)象應(yīng)當(dāng)對(duì)其他對(duì)象有盡可能少的

55、了解,不和陌生人說話。.接口隔離原則:客戶端不應(yīng)該依賴它不需要的接口; 一個(gè)類對(duì)另一個(gè)類的 依賴應(yīng)該建立在最小的接口上。.合成、聚合、復(fù)用原則:1、繼承復(fù)用繼承復(fù)用通過擴(kuò)展一個(gè)已有對(duì)象的實(shí)現(xiàn)來得到新的功能,基類明顯地捕獲共同的屬性和方法,而子類通過增加新的屬性和方法來擴(kuò)展超類的實(shí) 現(xiàn)。繼承是類型的復(fù)用。繼承復(fù)用的優(yōu)點(diǎn):新的實(shí)現(xiàn)較為容易,因?yàn)槌惖拇蟛糠止δ芸赏ㄟ^繼承關(guān)系自動(dòng) 進(jìn)入子類;修改或擴(kuò)展繼承而來的實(shí)現(xiàn)較為容易。繼承復(fù)用的缺點(diǎn):繼承復(fù)用破壞封裝,因?yàn)槔^承將超類的實(shí)現(xiàn)細(xì)節(jié)暴露給子類?!鞍?箱”復(fù)用;如果超類的實(shí)現(xiàn)發(fā)生改變,那么子類的實(shí)現(xiàn)也不得不發(fā)生改變。從超類繼承而來的實(shí)現(xiàn)是靜態(tài)的,不可能

56、再運(yùn)行時(shí)間內(nèi)發(fā)生改變, 因此沒有足夠的靈活性。2、合成/聚合復(fù)用由于合成/聚合可以將已有的對(duì)象納入到新對(duì)象中,使之成為新對(duì)象的一部分,因此新的對(duì)象可以調(diào)用已有對(duì)象的功能,其優(yōu)點(diǎn)在于:新對(duì)象存取成分對(duì)象的唯一方法是通過成分對(duì)象的接口 ;成分對(duì)象的內(nèi)部細(xì)節(jié)對(duì)新對(duì)象不可見?!昂谙洹睆?fù)用;該復(fù)用支持封裝。該復(fù)用所需的依賴較少。每一個(gè)新的類可將焦點(diǎn)集中在一個(gè)任務(wù)上。該復(fù)用可在運(yùn)行時(shí)間內(nèi)動(dòng)態(tài)進(jìn)行,新對(duì)象可動(dòng)態(tài)引用于成分對(duì)象類型相同的對(duì)象。缺點(diǎn):通過這種復(fù)用建造的系統(tǒng)會(huì)有較多的對(duì)象需要管理。為了能將多個(gè)不同的對(duì)象作為組合塊 (composition block )來使用,必須仔細(xì)地對(duì)接口進(jìn)行定義。七、設(shè)計(jì)模

57、式分類:創(chuàng)建型模式:工廠模式簡(jiǎn)單工廠工廠方法抽象工廠(等級(jí)結(jié)構(gòu)和產(chǎn)品族)單例模式原型模式(不要求代碼)Cloneable (繼承)繼承Clone ()方法序列化(不要求代碼)Serializable鎖結(jié)構(gòu)化設(shè)計(jì)模式組合模式適配器模式裝飾者模式橋接模式代理模式(不寫代碼)行為性設(shè)計(jì)模式迭代器模式訪問者模式(重構(gòu)代碼)狀態(tài)模式定義(電燈開關(guān))觀察者模式定義簡(jiǎn)單工廠Fruit 接口public interface Fruit publicvoidplant();publicvoidgrow();publicvoidhavrest();Apple 類public class Apple impleme

58、nts Fruit public voidplant() System. out .println(蘋果正在發(fā)芽);public voidgrow() System. out .println(蘋果正在生長(zhǎng));public voidhavrest() System. out .println(蘋果已經(jīng)成熟);Grape 類public class Grape implementsFruit public void plant() System. out .println(葡萄正在發(fā)芽);public void grow() System. out .println(葡萄正在生長(zhǎng));public

59、 void havrest() System. out .println(葡萄成熟);FruitFactory 方法public class FruitFactory public static Fruit getFruit(String str)Fruit fruit= null ;if (str.equals( apple )returnnew Apple();else if ( str.equals( grape )return new Grape();elseSystem. out .print(沒有你要的水果。);return fruit;主函數(shù)public class Cliet

60、public static void main(String口 args) Fruit f= null ;f=FruitFactory. getFruit (apple);f.grow(); f.plant(); f.havrest(); 工廠方法Fruit 接口public interface Fruit publicvoidplant();publicvoidgrow();publicvoidavrest();Apple 類public class Apple implementsFruit public void plant() System. out .println(蘋果正在發(fā)芽);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論