




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、體系結(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 )繼承是一種通過擴(kuò)展一個(gè)已有對(duì)象的實(shí)現(xiàn),從而獲得新功能的復(fù)用方法。泛化類(超類)可以顯式地捕獲那些公共的屬性和方法。特殊類(子類)則通過附加屬性和方法來進(jìn)行實(shí)現(xiàn)的擴(kuò)展。破壞了封裝性,因?yàn)檫@會(huì)將父類的實(shí)現(xiàn)細(xì)節(jié)
2、暴露給子類。繼承本質(zhì)上是“白盒復(fù)用”,對(duì)父類的修改,不會(huì)影響到子類。常用的設(shè)計(jì)模式可分為( A )B. 對(duì)象型、結(jié)構(gòu)型和行為型A. B. 對(duì)象型、結(jié)構(gòu)型和行為型C. 過程型、創(chuàng)建型和結(jié)構(gòu)型D. 抽象型、接口型和實(shí)現(xiàn)型“不要和陌生人說話”是對(duì) ( D )設(shè)計(jì)原則的通俗表述。A. 接口隔離A. 接口隔離B. 里氏代換7. 在適配器模式中,對(duì)象適配器模式是對(duì)C. 依賴倒轉(zhuǎn)D. .迪米特法則( A )設(shè)計(jì)原則的典型應(yīng)用D. .D. .迪米特法則C)設(shè)計(jì)模式的描述D. 單例模式D. 外觀模式D. 橋接模D. 橋接模式A. 合成聚合B. 里氏代換C. 依賴倒轉(zhuǎn)將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另一個(gè)接口,這句
3、話是對(duì)(A. 策略模式B. 橋接模式C. 適配器模式 TOC o 1-5 h z 以下設(shè)計(jì)模式中屬于結(jié)構(gòu)模式的是( D )A. 觀察者模式B. 單例模式C. 策略模式以下不屬于對(duì)象行為型模式是( D )A. 命令模式B. 策略模式C. 訪問者模式式下面的類圖表示的是哪個(gè)設(shè)計(jì)模式( D )A. 抽象工廠模式B. 觀察者模式C. 策略模式Open-Close開閉原則的含義是一個(gè)軟件實(shí)體( A )A. 應(yīng)當(dāng)對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。B. 應(yīng)當(dāng)對(duì)修改開放,對(duì)擴(kuò)展關(guān)閉。C. 應(yīng)當(dāng)對(duì)繼承開放,對(duì)修改關(guān)閉。D. 以上都不對(duì)。下面的類圖表示的是哪個(gè)設(shè)計(jì)模式( D )A. 策略模式B. 裝飾模式C. 橋接模式D.
4、 觀察者模式保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。這句話是對(duì)( D )設(shè)計(jì)模式的描述。A. 外觀模式B. 策略模式C. 適配器模式D. 單例模式以下意圖哪個(gè)是用來描述組合模式?( C )為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象。將對(duì)象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離。以下意圖哪個(gè)是用來描述命令模式?( A )將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而使你可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化。定義一系列的算法,把它們一個(gè)個(gè)封裝起來, 并且使它們可相互替換。為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。保證一
5、個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。以下哪種情況不適合使用適配器模式?( D )你想使用一個(gè)已經(jīng)存在的類,而它的接口不符合你的需求。你想創(chuàng)建一個(gè)類,該類可以復(fù)用另外一個(gè)類的功能。你想創(chuàng)建一個(gè)類,該類可以復(fù)用另外多個(gè)類的功能。你想在類中用相對(duì)較少的對(duì)象引用取代很多對(duì)象的引用。以下意圖哪個(gè)是用來描述觀察者模式?( B )將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí), 所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新。用原型實(shí)例指定創(chuàng)建對(duì)象的種類,并且通過拷貝這些原型創(chuàng)建新的對(duì)象。使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,避免請(qǐng)求的發(fā)送者和
6、接收者之間的耦合關(guān)系。以下意圖哪個(gè)是用來描述狀態(tài)模式?( C )使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,避免請(qǐng)求的發(fā)送者和接收者之間的耦合關(guān)系。順序訪問一個(gè)聚合對(duì)象中各個(gè)元素, 而又不需暴露該對(duì)象的內(nèi)部表示。允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為??雌饋硭坪跣薷牧怂念悺2东@一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài)。以下意圖哪個(gè)是用來描述策略模式?( D )將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離。C. 將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。D. 定義一系列的算法,把它們一個(gè)個(gè)封裝起來, 并且使它們可相互替換。12345678910
7、CDADADACDD11121314151617181920DADDCADBCD要依賴于抽象,不要依賴于具體。即針對(duì)接口編程,不要針對(duì)實(shí)現(xiàn)編程,是( D )A. 開閉原則B. 接口隔離原則C. 里氏代換原則D. 依賴倒轉(zhuǎn)原則以下對(duì) 開 -閉原則的一些描述錯(cuò)誤的是( A )開-閉原則與對(duì)可變性的封裝原則沒有相似性。找到一個(gè)系統(tǒng)的可變?cè)?將它封裝起來,叫開 -閉原則。對(duì)修改關(guān)閉: 是其原則之一。從抽象層導(dǎo)出一個(gè)或多個(gè)新的具體類可以改變系統(tǒng)的行為,是其原則之一。依據(jù)設(shè)計(jì)模式思想,程序開發(fā)中應(yīng)優(yōu)先使用的是( B )關(guān)系實(shí)現(xiàn)復(fù)用。4.5.A. 繼承B. 組合聚合C. 創(chuàng)建D. 4.5.A. 繼承B.
8、組合聚合C. 創(chuàng)建D. .以上都不對(duì)設(shè)計(jì)模式的兩大主題是( C )A. 系統(tǒng)的維護(hù)與開發(fā)C. 系統(tǒng)復(fù)用與系統(tǒng)擴(kuò)展常用的設(shè)計(jì)模式可分為( C )A. 過程型、創(chuàng)建型和結(jié)構(gòu)型C. 創(chuàng)建型、結(jié)構(gòu)型和行為型B. 對(duì)象組合與類的繼承D. 系統(tǒng)架構(gòu)與系統(tǒng)開發(fā)B. 對(duì)象型、結(jié)構(gòu)型和行為型D. 抽象型、接口型和實(shí)現(xiàn)型6.是對(duì) ( D )設(shè)計(jì)原則的通俗表述。6.A. 接口隔離B. 里氏代換C. 依賴倒轉(zhuǎn)D. .迪米特法則7.在適配器模式中,對(duì)象適配器模式是對(duì)( A )設(shè)計(jì)原則的典型應(yīng)用4.A. 合成聚合B. 里氏代換C.依賴倒轉(zhuǎn)D. .迪米特法則觀察者模式定義了一種( A )的
9、依賴關(guān)系A(chǔ). 一對(duì)多B. 多對(duì)多C.A. 工廠模式B. 外觀模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另一個(gè)接口,這句話是對(duì)(A. 組合模式B. 適配器模式A. 迭代器模式A. 策略模式B. 橋接模式B. 外觀模式一對(duì)一( B )C.D.生成器模式D. 單例模式C.訪問者模式D. 橋接模式C. 狀態(tài)模式C. 適配器模式 ( C )D. 策略模式C)設(shè)計(jì)模式的描述D. 單例模式D. 觀察者模式B. 裝飾模式C. 適配器模式A. 策略模式命令模式B. 組合模式C.( B )A. 橋接模式15. 保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。這句話是對(duì) 的描述。D. 觀察者模式( D )設(shè)計(jì)模式A.
10、 外觀模式B. 策略模式C. 適配器模式D.單例模式以下哪項(xiàng)不是橋接模式的優(yōu)點(diǎn)?A. 分離接口及其實(shí)現(xiàn)部分。C. 改變值以指定新對(duì)象。在觀察者模式中,表述錯(cuò)誤的是?( C )B.D.( C )提高可擴(kuò)充性。實(shí)現(xiàn)細(xì)節(jié)對(duì)客戶透明。A.B.C.態(tài)進(jìn)行。觀察者角色的更新是被動(dòng)的。 被觀察者可以通知觀察者進(jìn)行更新。 觀察者可以改變被觀察者的狀態(tài),再由被觀察者通知所有觀察者依據(jù)被觀察者的狀D.11當(dāng)我們想創(chuàng)建一個(gè)具體的對(duì)象而又不希望指定具體的類時(shí),可以使用( A )模式A. 創(chuàng)建型B. 結(jié)構(gòu)型C. 行為型D. .以上都不對(duì)以下意圖哪個(gè)是用來描述狀態(tài)模式?( C )使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,避免請(qǐng)求的發(fā)送
11、者和接收者之間的耦合關(guān)系。順序訪問一個(gè)聚合對(duì)象中各個(gè)元素, 而又不需暴露該對(duì)象的內(nèi)部表示。允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為??雌饋硭坪跣薷牧怂念?。捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài)。以下意圖哪個(gè)是用來描述組合模式?( C )為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象。將對(duì)象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離。12345678910DABCCDAABC11121314151617181920BCCBDCCACC常用的設(shè)計(jì)模式可分為( A )B. 對(duì)象型、結(jié)構(gòu)型和行為型D. B. 對(duì)
12、象型、結(jié)構(gòu)型和行為型D. 抽象型、接口型和實(shí)現(xiàn)型C. 過程型、創(chuàng)建型和結(jié)構(gòu)型“不要和陌生人說話”是對(duì) ( D )設(shè)計(jì)原則的通俗表述。A. 接口隔離A. 接口隔離B. 里氏代換在適配器模式中,對(duì)象適配器模式是對(duì)A. 合成聚合B. 里氏代換C. 依賴倒轉(zhuǎn)D. .迪米特法則( A )設(shè)計(jì)原則的典型應(yīng)用C. 依賴倒轉(zhuǎn)D. .迪米特法則將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另一個(gè)接口,這句話是對(duì)(A. 策略模式B. 將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另一個(gè)接口,這句話是對(duì)(A. 策略模式B. 橋接模式C. 適配器模式以下設(shè)計(jì)模式中屬于結(jié)構(gòu)模式的是( D )A. 觀察者模式B. 單例模式C. 迭代器模式C)設(shè)計(jì)模式的
13、描述D. 單例模式D. 適配器模式以下意圖哪個(gè)是用來描述命令模式?( A )將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而使你可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化。定義一系列的算法,把它們一個(gè)個(gè)封裝起來, 并且使它們可相互替換。為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。下面的類圖表示的是哪個(gè)設(shè)計(jì)模式( D )C. 狀態(tài)模式D. 適配器模式C. 狀態(tài)模式D. 適配器模式A. 抽象工廠模式B. 橋接模式Open-Close開閉原則的含義是一個(gè)軟件實(shí)體( A )應(yīng)當(dāng)對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。應(yīng)當(dāng)對(duì)修改開放,對(duì)擴(kuò)展關(guān)閉。應(yīng)當(dāng)對(duì)繼承開放,對(duì)修改關(guān)閉。以上都不對(duì)。以下意圖
14、哪個(gè)是用來描述組合模式?( C )為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象。將對(duì)象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離。以下意圖哪個(gè)是用來描述狀態(tài)模式?( C )使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,避免請(qǐng)求的發(fā)送者和接收者之間的耦合關(guān)系。順序訪問一個(gè)聚合對(duì)象中各個(gè)元素, 而又不需暴露該對(duì)象的內(nèi)部表示。允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為??雌饋硭坪跣薷牧怂念?。捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài)。12345678910ADACDADACC當(dāng)我們想創(chuàng)建一個(gè)具體的對(duì)象而又不希望指定具體的類時(shí),可以
15、使用( A )模式A. 創(chuàng)建型B. 結(jié)構(gòu)型C. 行為型D. .以上都不對(duì)以下對(duì) 開 -閉 原則的一些描述錯(cuò)誤的是( A )開 -閉 原則與 對(duì)可變性的封裝原則沒有相似性。找到一個(gè)系統(tǒng)的可變?cè)?將它封裝起來,叫開 -閉 原則。對(duì)修改關(guān)閉: 是其原則之一。從抽象層導(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ì)原則的典型
16、應(yīng)用A.合成聚合B.里氏代換C.依賴倒轉(zhuǎn)D.迪米特法則保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。這句話是對(duì)( D )設(shè)計(jì)模式的描述。A. 外觀模式B. 策略模式C. 適配器模式D. 單例模式以下意圖哪個(gè)是用來描述策略模式?( D )將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離。將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。定義一系列的算法,把它們一個(gè)個(gè)封裝起來, 并且使它們可相互替換。以下不屬于結(jié)構(gòu)型模式是( C )A. 組合模式B. 適配器模式C. 訪問者模式D. 橋接模式下面的類圖表示的是哪個(gè)設(shè)計(jì)模式( D )A. 策略模式C
17、. A. 策略模式C. 適配器模式D. 橋接模式以下意圖哪個(gè)是用來描述狀態(tài)模式?( C )使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,避免請(qǐng)求的發(fā)送者和接收者之間的耦合關(guān)系。順序訪問一個(gè)聚合對(duì)象中各個(gè)元素, 而又不需暴露該對(duì)象的內(nèi)部表示。允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為??雌饋硭坪跣薷牧怂念?。D.捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài)。12345678910AABDADDCDC1.常用的設(shè)計(jì)模式可分為( A )A. 創(chuàng)建型、結(jié)構(gòu)型和行為型C. 過程型、創(chuàng)建型和結(jié)構(gòu)型B. D.捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài)。12345678910AABDADDCDC1.常用的設(shè)計(jì)模式
18、可分為( A )A. 創(chuàng)建型、結(jié)構(gòu)型和行為型C. 過程型、創(chuàng)建型和結(jié)構(gòu)型B. 對(duì)象型、結(jié)構(gòu)型和行為型D. 抽象型、接口型和實(shí)現(xiàn)型2.是對(duì)( D )設(shè)計(jì)原則的通俗表述。3.在適配器模式中,對(duì)象適配器模式是對(duì)4.將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另一個(gè)接口,這句話是對(duì)(5.6.A.B.C.7.A. 接口隔離A. 合成聚合A. 策略模式A. 觀察者模式B. 里氏代換B. 里氏代換依賴倒轉(zhuǎn)D. .迪米特法則( A )設(shè)計(jì)原則的典型應(yīng)用B. 橋接模式C.C. 依賴倒轉(zhuǎn)適配器模式D. .迪米特法則C)設(shè)計(jì)模式的描述D. 單例模式B. 單例模式C. 迭代器模式D. 適配器模式以下意圖哪個(gè)是用來描述命令模式?(
19、A )將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而使你可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化。定義一系列的算法,把它們一個(gè)個(gè)封裝起來, 并且使它們可相互替換。為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。( D )A. 抽象工廠模式B. 橋接模式C. 狀態(tài)模式D. 適配器模式圖1Open-Close開閉原則的含義是一個(gè)軟件實(shí)體( A )應(yīng)當(dāng)對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。應(yīng)當(dāng)對(duì)修改開放,對(duì)擴(kuò)展關(guān)閉。應(yīng)當(dāng)對(duì)繼承開放,對(duì)修改關(guān)閉。以上都不對(duì)。以下意圖哪個(gè)是用來描述組合模式?( C )為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象。將對(duì)象
20、組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離。以下意圖哪個(gè)是用來描述狀態(tài)模式?( C )使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,避免請(qǐng)求的發(fā)送者和接收者之間的耦合關(guān)系。順序訪問一個(gè)聚合對(duì)象中各個(gè)元素, 而又不需暴露該對(duì)象的內(nèi)部表示。允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為。看起來似乎修改了它的類。捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài)。12345678910ADACDADACC填空題面向?qū)ο蟮钠邨l設(shè)計(jì)原則包括:單一職責(zé)原則, , ,合成聚合原則,接口隔離原則以及 。其中外觀模式是原則的典型應(yīng)用。工廠模式中分為, 工廠方法,三種模式。其中, 可以應(yīng)用平行等級(jí)
21、結(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í)一定要將注冊(cè)添加到事件源中。單例模式有兩種方式實(shí)現(xiàn),分別為和 。它們共同的特征是構(gòu)造函數(shù)的訪問屬性必須是。答案:1、開閉原則里氏代換原則依賴倒轉(zhuǎn)原則迪米特法則迪米特法則2、簡單工廠抽象工廠工廠方法3、類對(duì)象 類 對(duì)象Observ
22、able Object5、事件事件監(jiān)聽者事件監(jiān)聽者6、餓漢式懶漢式私有 (private)面向?qū)ο蟮钠邨l設(shè)計(jì)原則包括:,開閉原則,依賴倒轉(zhuǎn)原則, ,接口隔離原則以及 。其中外觀模式是原則的典型應(yīng)用。工廠模式中分為簡單工廠,三種模式。其中,可以應(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è)基本角色包括、
23、 和 。單例模式有兩種方式實(shí)現(xiàn),分別為和 。其中 能夠?qū)崿F(xiàn)類被加載時(shí)就同時(shí)生成類的實(shí)例。答案:1、單一職責(zé)原則里氏代換原則合成聚合原則迪米特法則迪米特法則2、工廠方法抽象工廠工廠方法3、類對(duì)象 類 對(duì)象Observable Object5、事件源事件 事件監(jiān)聽者6、餓漢式懶漢式餓漢式面向?qū)ο蟮钠邨l設(shè)計(jì)原則包括:單一職責(zé)原則,里氏代換原則, TOC o 1-5 h z ,合成聚合原則,接口隔離原則以及 。工廠模式中分為簡單工廠,和 三種模式。Java API中,有兩個(gè)與觀察者模式相關(guān)的類和接口,分別是 和 。單例模式有兩種方式實(shí)現(xiàn),分別稱為和 。它們共同的特征是構(gòu)造函數(shù)的訪問修飾符必須是。答案:
24、1、開閉原則、依賴倒轉(zhuǎn)原則、 迪米特法則2、工廠方法、抽象工廠(方法)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í)加載的方式,稱為,實(shí)現(xiàn)即時(shí)加載的方式稱為 。答案:單一職責(zé)原則、 里氏代換原則、 合成聚合原則、迪米特法則類、對(duì)象、類觀察者模式懶漢
25、式 、 餓漢式(五)面向?qū)ο蟮钠邨l設(shè)計(jì)原則包括:單一職責(zé)原則,里氏代換原則,合成聚合原則,接口隔離原則以及 。工廠模式中分為簡單工廠,和 三種模式。適配器模式,可以細(xì)分為適配器和適配器兩種實(shí)現(xiàn)。單例模式有兩種方式實(shí)現(xiàn),分別稱為和 。它們共同的特征是構(gòu)造函數(shù)的訪問修飾符必須是。答案:開閉原則、依賴倒轉(zhuǎn)原則、 迪米特法則工廠方法、抽象工廠(方法)3、類、對(duì)象4、懶漢式、 餓漢式、 private( 私有的)三、 判斷題開閉原則的關(guān)鍵是抽象化。在軟件開發(fā)中,如果要實(shí)現(xiàn)復(fù)用,應(yīng)盡量較多使用繼承,較少使用合成聚合的方式。當(dāng)一個(gè)對(duì)象的行為取決于它所處的狀態(tài)時(shí),這時(shí)我們應(yīng)該使用橋接模式適配器模式是一種創(chuàng)建型
26、設(shè)計(jì)模式MVC 結(jié)構(gòu)中模型和視圖之間交互的實(shí)現(xiàn)可以基于觀察者模式,其中模型是被觀察者。答案:1.2. 3. 4. 5. 設(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.2. 3. 4. 5. 開閉原則的關(guān)鍵是抽象化。在軟件開發(fā)中,如果要實(shí)現(xiàn)復(fù)用,應(yīng)盡量較多使用繼承,較少使用合成聚合的方式。當(dāng)一個(gè)對(duì)象的行為取決于它所處的狀態(tài)時(shí),這時(shí)我們應(yīng)該使用橋接模式。適配器
27、模式是一種創(chuàng)建型設(shè)計(jì)模式。命令模式標(biāo)準(zhǔn)類圖中的Receiver不是必須存在的。答案:12345(四)設(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ì)模式。抽象工廠方法完全符合開閉模式。答案:12345(五)開閉原則的關(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)類圖中的Receiver不是必須存在的。答
28、案:12345四、 簡答題(一 )假設(shè)系統(tǒng)中有三個(gè)類,分別為類A、 類 B 和類C。 在現(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ì)象,應(yīng)該使用哪一種創(chuàng)建模式?(2 分)根據(jù)給出的類圖,繪制出產(chǎn)品等級(jí)和產(chǎn)品族的圖示。( 3 分)根據(jù)產(chǎn)品族圖示,繪制工廠類的層
29、次結(jié)構(gòu)圖(必須寫清類的方法)。 ( 4 分)答案:2 分)重構(gòu)問題:新建接口I, 使得類 答案:2 分)重構(gòu)問題:新建接口I, 使得類 A依賴于接口I ,而類B 和 C實(shí)現(xiàn)接口I。 (或相同概念的表述)3 分)( 3 分)( 4 分)外觀模式類圖(4 分)1 )應(yīng)該使用抽象工廠模式(2 分)2)產(chǎn)品等級(jí)和產(chǎn)品族的圖示(3 分)工廠類圖(4 分 ,不對(duì)類名和方法名做限制,能夠正確表達(dá)含義即可)簡述開閉原則、依賴倒轉(zhuǎn)原則的定義。簡述策略模式的應(yīng)用場景(3 分) ,并繪制策略模式的類圖(3 分) 。假如要用軟件實(shí)現(xiàn)自動(dòng)茶水銷售機(jī)的功能,茶水的價(jià)格取決于茶的品種和杯子的大小。請(qǐng)回答以下問題, TOC
30、o 1-5 h z 應(yīng)該使用哪一種模式?(2 分)請(qǐng)繪制該模式的類圖。( 4 分)答案:開閉原則:一個(gè)軟件實(shí)體,應(yīng)該對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉(3 分)依賴倒轉(zhuǎn)原則:高層模塊不應(yīng)該依賴于低層模塊,它們都應(yīng)該依賴抽象。( 3 分)1)策略模式的應(yīng)用場景:當(dāng)解決一個(gè)問題,有很多種方法或解決方案可以使用時(shí),可以將每一種方法或解決方案封裝成一個(gè)類,可以相互替換(或相同意義表達(dá),3 分 ).2)類圖(3 分)1 )應(yīng)該使用橋接模式(2 分)2 ) 類圖 (4 分 , 不對(duì)類名和方法名做限制,能夠正確表達(dá)含義即可)簡述依賴倒轉(zhuǎn)原則的定義。假如系統(tǒng)中存在一組具有相同結(jié)構(gòu)的產(chǎn)品類,如圖所示,如果要?jiǎng)?chuàng)建具體產(chǎn)品對(duì)象
31、,應(yīng)該使用哪一種創(chuàng)建模式?(2 分)根據(jù)給出的類圖,繪制出產(chǎn)品等級(jí)和產(chǎn)品族的圖示。( 4 分)根據(jù)產(chǎn)品族圖示,繪制工廠類的層次結(jié)構(gòu)圖(必須寫清類的方法)。 ( 4 分)答案:1. 高層模塊不應(yīng)該依賴低層模塊,它們都應(yīng)該依賴抽象(3 分)。抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象(3 分)。2.1 )應(yīng)該使用抽象工廠模式(2 2.1 )應(yīng)該使用抽象工廠模式(2 )產(chǎn)品等級(jí)和產(chǎn)品族的圖示3)(4 分)類圖( 4 分 , 不對(duì)類名和方法名做限制,能夠正確表達(dá)含義即可)程序設(shè)計(jì)題五、程序設(shè)計(jì)題1. 現(xiàn)在需要開發(fā)一款游戲軟件,請(qǐng)以單例模式來設(shè)計(jì)其中的Boss角色。 角色的屬性和動(dòng)作可以任意設(shè)計(jì)。要求:該
32、Boss類可以在多線程中使用。( 8 分)2. 一個(gè)農(nóng)場公司,專門負(fù)責(zé)培育各種水果,有葡萄,草莓和蘋果,請(qǐng)使用工廠方法,編寫工廠類和主程序,并在主程序中來完成草莓生長狀態(tài)的描述。8 分)在客戶端完成數(shù)據(jù)的展示。具體要求如下:3. 給定如圖所示的樹形結(jié)構(gòu),請(qǐng)應(yīng)用組合模式,在客戶端完成數(shù)據(jù)的展示。具體要求如下:繪制組合模式的類圖。( 4 分)編寫簡單元素和復(fù)雜元素的代碼。( 4 分)在客戶端構(gòu)造出樹形數(shù)據(jù)并輸出。( 4 分)提示:程序運(yùn)行后,輸出信息應(yīng)為RootLeaf AComp BLeaf BXLeaf BYLeaf C答案:Public class BossPrivate static Bo
33、ss instance; /(2 分)Private Boss() /(2 分)Public static Boss getInstance() / ( 2 分)If(instance = null)Synchronized(Boss.Class) / ( synchronized 關(guān)鍵字,2 分)If(instance = null)Instance = new Boss();return instance; 或者Public class BossPrivate static Boss instance = new Boss();/(4 分)Private Boss()/ ( 2 分)Pub
34、lic static Boss getInstance()/2 分Return instance;Public 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 Facto
35、ryPublic Fruit build()Return new Strawberry();Public class 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)簡單元素、復(fù)雜元素(4分):class Leaf implements Com
36、ponentString name;public Leaf(String name) = name; 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
37、 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分):public class Test public static void main(String args)Component root = new Composite(Root); root.add(new Lea
38、f(Leaf A);Component comp = new Composite(Comp B); root.add(comp);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。 要求:該 PrintSpooler 類可以在多線程中使用。( 10 分)一個(gè)農(nóng)場公司,專門負(fù)責(zé)培育各種水果,有葡萄,草莓和蘋果,請(qǐng)使用簡單工廠模式,編寫 簡單工廠類和主程序,并在主程序中
39、來完成蘋果生長狀態(tài)的描述。( 10分)給定如圖所示的樹形結(jié)構(gòu),請(qǐng)應(yīng)用組合模式,在客戶端完成數(shù)據(jù)的展示。具體要求如下:繪制組合模式的類圖。( 4 分)編寫簡單元素和復(fù)雜元素的代碼。( 4 分)在客戶端構(gòu)造出樹形數(shù)據(jù)并輸出。提示:程序運(yùn)行后,輸出信息應(yīng)為Dir1File1Dir2File3Dir34 分)2 分)File4答案:4 分)2 分)File4答案:Private static PrintSpooler 分)Private PrintSpooler() /(2 分)Public static PrintSpooler getInstance() /If(instance = null)S
40、ynchronized(PrintSpooler.Class) / ( synchronized 關(guān)鍵字,2 分)If(instance = null)Instance = new PrintSpooler();/2 分return instance; 或者Public class PrintSpoolerPrivate static PrintSpooler instance = new PrintSpooler(); /(4分)Private PrintSpooler() /(2 分)Public static PrintSpooler getInstance() /( 2 分)retur
41、n instance; /(2 分)Public class FruitFactory /6 分,要有靜態(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 /
42、(4 分)Public static void main(string str)Fruit ft = FruitFactory.creatFruit(“ Apple ” );ft.plant();Ft.grow();Ft.harvest();類圖, 類名不限,但必須將抽象的概念,以及 Composite 和 Component之間的關(guān)系用正確的連線表示。簡單元素、復(fù)雜元素(4分) :class Leaf implements ComponentString name;public Leaf(String name) = name;public void display()Sy
43、stem.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 list.size() ;i +)list.get(i
44、).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(Dir1);root.add(new Leaf(File1);Component comp = new Composite(Dir2);root.add(comp);comp.add(new Leaf(File3
45、);Component comp = new Composite(Dir3);root.add(comp);comp.add(new Leaf(File4);root.display();(三). 一個(gè)農(nóng)場公司,專門負(fù)責(zé)培育各種水果,有葡萄,草莓和蘋果,請(qǐ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)后ElementA 類的代碼。( 4 分)3)在客戶端運(yùn)用訪問者模式,
46、對(duì)ElementA的實(shí)例,完成CalPrice操作。( 2 分)3. 給定如圖所示的樹形結(jié)構(gòu),請(qǐng)應(yīng)用組合模式,在客戶端完成數(shù)據(jù)的展示。具體要求如下:繪制組合模式的類圖。( 4 分) TOC o 1-5 h z 編寫簡單元素的代碼。(2 分)編寫復(fù)雜元素的代碼。(6 分)編寫客戶端的代碼(4 分)提示:程序運(yùn)行后,輸出信息應(yīng)為Dir1File1Dir2File3Dir3File4答案:Public class FruitFactory /4 分,要有靜態(tài)方法,返回fruitPublic static Fruit creatFruit(String type)Fruit ft = null ;If
47、(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 = FruitFactory.creatFruit( ft.plant();Apple ” );1) 類圖, 類名不限,但必須將抽象的概念,以及 Co
48、mposite 和 Component之間的關(guān)系用正確的連線表示。Ft.grow();Ft.harvest(); 2.1) 類圖為 (4 分)Public void accept(Visitor v)V.accept(this)3) 客戶端 2 分Visitor v = new CalPriceVistor();ElementA a = new ElementA();A.accept(v);3.2) class ElementA extends Element/42) 簡單元素(2分):class Leaf implements ComponentString name;public Leaf
49、(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 name) = name;public void display()System.out.println(name);for(int i = 0 ; i list.size() ;i +)list
50、.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 Composite(Dir1);root.add(new Leaf(File1);Component comp = new Composite(Dir2); root.add(comp);comp.add(new Le
51、af(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ò)展開放,對(duì)修改關(guān)閉。里氏代換原則:定義1: 如果對(duì)每一個(gè)類型為T1 的對(duì)象 o1 ,都有類型為T2 的對(duì)象o2,使得以 T1 定義的所有程序P 在所有的對(duì)象o1 都代換成o2 時(shí), 程序 P的行為沒有發(fā)生變化,那么類型T
52、2 是類型 T1 的子類型。定義2: 所有引用基類的地方必須能透明地使用其子類的對(duì)象。依賴倒轉(zhuǎn)原則: 高層模塊不應(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 簡寫LKP) ,就是說一個(gè)對(duì)象應(yīng)當(dāng)對(duì)其他對(duì)象有盡可能少的了解, 不和陌生人說話。接口隔離原則: 客戶端不應(yīng)該依賴它不需要的接口;一個(gè)類對(duì)另一個(gè)類的依賴應(yīng)該建立在最小的接口上。合成、聚合、復(fù)用原則:1、繼承復(fù)用繼承復(fù)用通過擴(kuò)展一個(gè)已有對(duì)象的實(shí)現(xiàn)來得到新的功能,基類
53、明顯地捕獲共同的屬性和方法,而子類通過增加新的屬性和方法來擴(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)的,不可能再運(yùn)行時(shí)間內(nèi)發(fā)生改變,因此沒有足夠的靈活性。2、合成/ 聚合復(fù)用由于合成 / 聚合可以將已有的對(duì)象納入到新對(duì)象中,使之成為新對(duì)象的一部分,因此新的對(duì)象可以調(diào)用已有對(duì)象的功能,其優(yōu)點(diǎn)在于:新對(duì)象存取成分對(duì)象的唯一方法
54、是通過成分對(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ì)模式分類:創(chuàng)建型模式:工廠模式簡單工廠工廠方法抽象工廠(等級(jí)結(jié)構(gòu)和產(chǎn)品族)單例模式原型模式(不要求代碼)Cloneable (繼承)繼承 Clone()方法序列化(不要求代碼)Serializable鎖結(jié)構(gòu)化設(shè)計(jì)模
55、式組合模式適配器模式裝飾者模式橋接模式代理模式(不寫代碼)行為性設(shè)計(jì)模式迭代器模式訪問者模式(重構(gòu)代碼)狀態(tài)模式定義(電燈開關(guān))觀察者模式定義簡單工廠public interface Fruit publicvoidplant();publicvoidgrow();publicvoidhavrest();Apple類public class Apple implements Fruit public void plant() System. out .println( 蘋果正在發(fā)芽 );public void grow() System. out .println( 蘋果正在生長 );publ
56、ic void havrest() System. out .println( 蘋果已經(jīng)成熟 );Grape類public class Grape implements Fruit public void plant() System. out .println( 葡萄正在發(fā)芽 );public void grow() System. out .println( 葡萄正在生長 );public void havrest() System. out .println( 葡萄成熟 );FruitFactory 方法public class FruitFactory public static Fr
57、uit getFruit(String str)Fruit fruit= null ;if (str.equals( apple )return new Apple(); else if ( str.equals( grape )returnnew Grape(); returnnew Grape(); elseSystem. out .print( 沒有你要的水果。 );return fruit;主函數(shù)public class Cliet public static void main(String args) Fruit f= null ;f=FruitFactory. getFruit
58、( apple );f.grow();f.plant();f.havrest();工廠方法Fruit 接口public interfaceFruit public voidplant();public voidgrow();public voidhavrest();Apple類public class Apple implementsFruit public voidplant() System.out .println( 蘋果正在發(fā)芽 );public voidgrow() System. out.println(蘋果正在生長 );public voidhavrest() System.ou
59、t .println( 蘋果已經(jīng)成熟 );Grape類public class Grape implementsFruit public voidplant() System.out .println( 葡萄正在發(fā)芽 );public voidgrow() System. out.println(葡萄正在生長 );public voidhavrest() System.out .println( 葡萄成熟 );FruitFactory接口public interfaceFruitFactory publicFruit getFruit();AppleFactory 類public class
60、AppleFactory implements FruitFactorypublic Fruit getFruit() return new Apple(); GrapeFactory 類public class GrapeFactory implements FruitFactory public Fruit getFruit() return new Grape(); 主函數(shù)public class Cliet public static void main(String args) FruitFactory fruitfactory =null ;fruitfactory= new Ap
溫馨提示
- 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. 人人文庫網(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ī)療軟件購買合同范本
- 縣城餐飲轉(zhuǎn)讓合同范本
- 三個(gè)合伙購房合同范例
- 廚師保密協(xié)議合同范本
- 原油供銷合同范例
- 合伙創(chuàng)業(yè)辦廠合同范本
- 賣賣布合同范本
- 加工磚頭銷售合同范本
- 人保車險(xiǎn)客戶專員合同范本
- 分期購買釘鞋合同范本
- 2024年“法律進(jìn)企業(yè)”活動(dòng)實(shí)施方案
- 小兒高熱驚厥課件
- 投資學(xué)基礎(chǔ)(第2版)教案
- 突發(fā)事件及自救互救學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 青少年無人機(jī)課程:第一課-馬上起飛
- 《靜脈治療護(hù)理技術(shù)操作規(guī)范》測試題考試試題及答案
- 芙蓉鎮(zhèn)足球協(xié)會(huì)成立申請(qǐng)書
- 鍋爐安裝改造維修質(zhì)量保證體系文件(手冊(cè)+程序文件+表格+工藝文件匯編)-符合TSG 07-2019特種設(shè)備質(zhì)量保證管理體系
- 鍘草機(jī)設(shè)備更新項(xiàng)目資金申請(qǐng)報(bào)告-超長期特別國債投資專項(xiàng)
- 學(xué)習(xí)課程方案、課程標(biāo)準(zhǔn)心得體會(huì)
- DB14∕T 1319-2016 公路工程標(biāo)準(zhǔn)工程量清單及計(jì)量規(guī)范
評(píng)論
0/150
提交評(píng)論