OOAD與設計模式練習題

2021-08-08 10:27:21 字數 1487 閱讀 4045

1、在系統的整合中,模組a中有乙個類

public class action

}在模組b中有乙個介面

public inte***ce work

在模組c中有乙個方法

public void go(work work)

action中的run方法正好適用於work介面中dorun方法的實現,但是action和work又是倆個不相容的型別,我們還要遵守ocp原則,只能擴充套件源**又不能修改源**,那麼這個時候我們應該用怎麼的**來解決這個問題。

(介面卡)

2、系統中有乙個類person,該類從系統中的乙個介面中實現了乙個方法 public void say(string name);該方法可以列印 "hello "+name ,現在需要動態的增加person類中say方法功能,比如在列印出名字之前在名字前面加上乙個字首"briup_",還有在say方法列印名字之後記錄一下當前列印的時間。同時這倆個新功能還是可以根據使用者的要求動態的新增到say方法上的。

(裝飾模式)

3、假設乙個系統中有三個簡單角色,"遊客","會員","管理員",當用乙個使用者user進行檢視其它使用者資訊功能showusersinfo的時候,但是只有管理員才能有許可權使用這個功能,所以我們需要使用動態**的方式產生**物件,從而在可以showusersinfo方法執行執行先看看使用者是否是管理員的角色,如果是則讓他檢視,如果不是則不讓檢視

(**模式,使用靜態**就可以)

4、如果系統中的模組a、模組b、模組c裡面有不同的方法,現在使用者使用的時候需要不停的切換不同的物件來呼叫其對應的方法完成相應的功能,那麼怎麼設計能解決這個問題,用簡單的**進行實現

(門面模式)

(組合模式)

6、使用觀察者模式完成以下功能:當孩子生病的時候,孩子的父親和母親分別做出相應的處理

(觀察者模式)

7、乙個人九宮格裡面,只能前進一步,原地左轉,原地右轉,那麼如果這個人隨機發出幾個動作之後,那麼這個人是否會死亡(越過九宮格範圍則視為死亡),如果沒有死亡那麼這個人現在的位置是**。使用狀態模式來完成**

(狀態模式)

person:forward

與狀態相關(面向)

north:x--;west,east

south:x++;east,west

west:y--;...,...

east:y++;...,...

location

}state

northstate

psrson

}turnleft()

turnright()

}8、有乙個字串,要依次經過幾個過濾器層層過濾後再次能輸出,第乙個是幾個固定的敏感詞語不能出現比如反動分子、恐怖主義等等,第二是和系統相關的詞語不能出現例如管理員、系統等,第三是文字不能太長,否則就裁剪到超過的長度部分。使用責任鏈模式來實現

(責任鏈模式)

9、自己寫乙個類car,要求car的物件是單例,同時分別使用不同版本的單例模式來實現,並描述一下每種情況的特點

(單例模式)

python書中練習題 python練習題

1 定義乙個空列表,接收從鍵盤輸入的整數,把列表傳給乙個從大到小排序的函式,再輸出排序後的列表的值 listex b 0 a int input 請輸入列表長度 while b a num int input 請輸入字元 b 1 print listex sum 0 for i in range 0...

python的練習題 Python練習題

1 使用while迴圈輸入1 2 3 4 5 6 8 9 10 i 0while i 10 i i 1 if i 7 continue print i 結果 e python python python test.py1 2 求1 100的所有數的和 i 0sum 0 while i 100 i 1...

資料與結構練習題

設計程式,隨生成乙個1到100的隨機數,讓使用者去猜這個數的大小,若數大於此數,返回 數太大,請重新輸入。太小則返回 太小,重新輸入。當等於此數時,返回 猜對了,恭喜。1.採用random函式生成乙個1到100的隨機數。2.設計迴圈i從0到99次,提醒使用者輸入乙個數,然後進行判斷此數與隨機數的大小...