試題(35)、(36)
某系統中的文本顯示類(TextView)和圖片顯示類(PictureView)都繼承了組件類(Component),分別顯示文本和圖片內容,現需要構造帶有滾動條或者帶有黑色邊框,或者既有滾動條又有黑色邊框的文本顯示控件和圖片顯示控件,但希望最多只增加3個類。那么采用設計模式____(35)可實現該需求,其優點是____(36)。
(35)A. 外觀 B. 單體 C. 裝飾 D. 模板方法
(36)A. 比靜態繼承具有更大的靈活性 B. 提高已有功能的重復使用性 C. 可以將接口與實現相分離 D. 為復雜系統提供了簡單接口
試題(35)、(36)分析
裝飾(Decorator)模式可以在不修改對象外觀和功能的情況下添加或者刪除對象功能。它可以使一種對客戶端來說是透明的方法來修改對象的功能,也就是使用初始類的子類實例對初始對象進行授權。裝飾模式還為對象動態地添加了額外的重任,這樣就在不使用靜態繼承的情況下,為修改對象功能提供了靈活的選擇。
在以下情況中,應該使用裝飾模式:
- 想要在單個對象中動態并且透明地添加責任,而這樣并不會影響其他對象;
- 想要在以后可能要修改的對象中添加責任;
- 當無法通過靜態子類化實現擴展時。
參考答案
(35)C (36)A