軟考真題之設計模式


18年系統架構設計師

設計模式描述了一個出現在特定設計語境中的設計再現問題,並為它的解決方案提供了一個經過充分驗證的通用方案,不同的設計模式關注解決不同的問題。例如,抽象工廠模式提供一個接口,可用創建一系列相關或相互依賴的對象,而無需指定它們具體的類,它是一種 54 模式; 55 模式將類的抽象部分和它的實現部分分離出來,使它們可以獨立變化,它屬於 56 模式; 57 模式將一個請求封裝為一個對象,從而可用不同的請求對客戶進行參數化,將請求排隊或記錄請求日志,支持可撤銷的操作。
54
A. 組合型
B. 結構型
C. 行為型
D. 創建型
55
A. Bridge
B. Proxy
C. Prototype
D. Adapter
56
A. 組合型
B. 結構型
C. 行為型
D. 創建型
57
A. Command
B. Facade
C. Memento
D. Visitor

17年系統架構設計師

●按照設計模式的目的進行划分,現有的設計模式可以分為三類。其中創建型模式通過采用抽象類所定義的接口,封裝了系統中對象如何創建、組合等信息,其代表有 54 模式等; 55 模式主要用於如何組合已有的類和對象以獲得更大的結構,其代表有Adapter模式等; 56 模式主要用於對象之間的職責及其提供服務的分配方式,其代表有 57 模式等。
54
A. Decorator
B. Flyweight
C. Command
D. Singleton
55
A. 合成型
B. 組合型
C. 結構型
D. 聚合型
56
A. 行為型
B. 交互型
C. 耦合型
D. 關聯型
57
A. Prototype
B. Facade
C. Proxy
D. Visitor

16年系統架構設計師

設計模式基於面向對象技術,是人們在長期的開發實踐中良好經驗的結晶,提供了一個簡單、統一的描述方法,使得人們可以復用這些軟件設計辦法、過程管理經驗。按照設計模式的目的進行划分,現有的設計模式可以分為創建型、 54 和行為型三種類型。其中 55 屬於創建型模式, 56 屬於行為型模式。 57 模式可以將一個復雜的組件分成功能性抽象和內部實現兩個獨立的但又相關的繼承層次結構,從而可以實現接口與實現分離。
54
A. 合成型
B. 組合型
C. 結構型
D. 聚合型
55
A. Adaptor
B. Facade
C. Command
D. Singleton
56
A. Decorator
B. Composite
C. Memento
D. Builder
57
A. Prototype
B. Flyweight
C. Adapter
D. Bridge

15年系統架構設計師

●某軟件公司欲開發一個繪圖軟件,要求使用不同的繪圖程序繪制不同的圖形。在明確用戶需求后,該公司的架構師決定采用Bridge模式實現該軟件,並設計UML類圖如下圖所示。圖中與Bridge模式中的Abstraction角色相對應的類是 32 ,與Implementor角色相對應的類是 33

32
A. Shape
B. Drawing
C. Rectangle
D. V2Drawing
33
A. Shape
B. Drawing
C. Rectangle
D. V2Drawing

●在面向對象設計的原則中, 36 原則是指抽象不應該依賴予細節,細節應該依賴於抽象,即應針對接口編程,而不是針對實現編程。
36
A. 開閉
B. 里氏替換
C. 最少知識
D. 依賴倒置

14年系統架構設計師

●一組對象以定義良好但是復雜的方式進行通信,產生的相互依賴關系結構混亂且難以理解。采用 32 模式,用一個特定對象來封裝一系列的對象交互,從而使各對象不需要顯式地相互引用,使其耦合松散,而且可以獨立地改變它們之間的交互。
32
A. 解釋器(Interpreter)
B. 策略(Strategy)
C. 中介者(Mediator)
D. 迭代器(Iterator)

●某廣告公司的宣傳產品有宣傳冊、文章、傳單等多種形式,宣傳產品的出版方式包括紙質方式、CD、DVD、在線發布等。現要求為該廣告公司設計一個管理這些宣傳產品的應用,采用 33 設計模式較為合適,該模式 34
33
A. Decorator
B. Adapter
C. Bridge
D. Façade
34
A. 將一系列復雜的類包裝成一個簡單的封閉接口
B. 將抽象部分與它的實現部分分離,使它們都可以獨立地變化
C. 可在不影響其他對象的情況下,以動態、透明的方式給單個對象添加職責
D. 將一個接口轉換為客戶希望的另一個接口

13年系統架構設計師

●某系統中的文本顯示類(TextView)和圖片顯示類(PictureView)都繼承了組件類(Component),分別顯示文本和圖片內容,現需要構造帶有滾動條或者帶有黑色邊框,或者既有滾動條又有黑色邊框的文本顯示控件和圖片顯示控件,但希望最多只增加3個類。那么采用設計模式 35 可實現該需求,其優點是 36
35
A. 外觀
B. 單體
C. 裝飾
D. 模板
36
A. 比靜態繼承具有更大的靈活性
B. 提高已有功能的重復使用性
C. 可以將接口與實現相分離
D. 為復雜系統提供了簡單接口

12年系統架構設計師

●對於違反里氏替換原則的兩個類A和B,可以采用的候選解決方案中,正確的是 35
35
A. 盡量將一些需要擴展的類或者存在變化的類設計為抽象類或者接口,並將其作為基類,在程序中盡量使用基類對象進行編程
B. 創建一個新的抽象類C,作為兩個具體類的超類,將A和B共同的行為移動到C中,從而解決A和B行為不完全一致的問題
C. 將B到A的繼承關系改成組合關系
D. 區分是Is-a還是Has-a。如果是Is-a,可以使用繼承關系,如果是Has-a,應該改成組合或聚合關系

●若系統中的某子模塊需要為其他模塊提供訪問不同數據庫系統的功能,這些數據庫系統提供的訪問接口有一定的差異,但訪問過程卻都是相同的,例如,先連接數據庫,再打開數據庫,最后對數據進行查詢。針對上述需求,可以采用 49 設計模式抽象出相同的數據庫訪問過程,該設計模式 50
49
A. 外觀
B. 裝飾
C. 橋接
D. 享元
50
A. 可以動態、透明地給單個對象添加職責
B. 為子系統定義了一個高層接口,這個接口使得這一子系統更加容易使用
C. 通過運用共享技術,有效支持大量細粒度的對象
D. 將抽象部分與它的實現部分分離,使它們都可以獨立地變化

●某軟件公司欲設計一款圖像處理軟件,幫助用戶對拍攝的照片進行后期處理。在軟件需求分析階段,公司的系統分析師識別出了如下3個關鍵需求:
圖像處理軟件需要記錄用戶在處理照片時所有動作,並能夠支持用戶動作的撤銷與重做等行為。
圖像處理軟件需要根據當前正在處理的照片的不同特征選擇合適的處理操作,處理操作與照片特征之間具有較為復雜的邏輯關系。
圖像處理軟件需要封裝各種圖像處理算法,用戶能夠根據需要靈活選擇合適的處理算法;軟件還要支持高級用戶根據一定的規則添加自定義處理算法。
在系統設計階段,公司的架構師決定采用設計模式滿足上述關鍵需求中對系統靈活性與擴展性的要求。具體來說,為了支持靈活的撤銷與重做等行為,采用 51 最為合適;為了封裝圖像操作與照片特征之間的復雜邏輯關系,采用 52 最為合適;為了實現圖像處理算法的靈活選擇與替換,采用 53 最為合適。
51
A. 工廠模式
B. 責任鏈模式
C. 中介者模式
D. 命令模式
52
A. 狀態模式
B. 適配器模式
C. 組合模式
D. 單例模式
53
A. 模板方法模式
B. 訪問者模式
C. 策略模式
D. 觀察者模式

11年系統架構設計師

最少知識原則(也稱為迪米特法則)是面向對象設計原則之一,指一個軟件實體應當盡可能少地與其他實體發生相互作用。這樣,當一個實體被修改時,就會盡可能少地影響其他的實體。下列敘述中, 31 不符合最少知識原則。
31
A. 在類的划分上,應當盡量創建松耦合的類
B. 在類的設計上,只要有可能,一個類型應當設計成不變類
C. 在類的結構設計上,每個類都應當盡可能提高對其屬性和方法的訪問權限
D. 在對其他類的引用上,一個對象對其他對象的引用應當降到最低

●某公司欲開發一門戶網站,將公司的各個分公司及辦事處信息進行整合。決定采用Composite設計模式來實現公司的組織結構關系,並設計了如下圖所示的UML類圖。圖中與Composite模式中的Component角色相對應的類是 33 ,與Composite角色相對應的類是 34

33
A. Company
B. Finance
C. HRDepartment
D. Department
34
A. Company
B. FinanceDepartmen
C. HRDepartment
D. ConcreteCompany

●某軟件公司正在設計一個通用的嵌入式數據處理平台,需要支持多種數據處理芯片之間的數據傳遞與交換。該平台的核心功能之一要求能夠屏蔽芯片之間的數據交互,使其耦合松散,並且可以獨立改變芯片之間的交互過程。針對上述需求,采用 53 最為合適。
53
A. 抽象工廠模式
B. 中介者模式
C. 策略模式
D. 狀態模式

●某軟件公司正在設計一個圖像處理軟件,該軟件需要支持用戶在圖像處理過程中的撤銷和重做等動作,為了實現該功能,采用 54 最為合適。
54
A. 單例模式
B. 命令模式
C. 訪問者模式
D. 適配器模式

●某互聯網公司正在設計一套網絡聊天系統,為了限制用戶在使用該系統時發表不恰當言論,需要對聊天內容進行特定敏感詞的過濾。針對上述功能需求,采用 55 能夠靈活配置敏感詞的過濾過程。
55
A. 責任鏈模式
B. 工廠模式
C. 組合模式
D. 裝飾模式

10年系統架構設計師

●某銀行系統采用Factory Method方法描述其不同賬戶之間的關系,設計出的類圖如下所示。其中與Factory Method中的Creator角色相對應的類是 33 ;與Product角色相對應的類是 34

33
A. Bank
B. Account
C. Checking
D. Savings
34
A. Bank
B. Account
C. Checking
D. Savings

●某公司欲開發一個軟件系統的在線文檔幫助系統,用戶可以在任何一個查詢上下文中輸入查詢關鍵字,如果當前查詢環境下沒有相關內容,則系統會將查詢按照一定的順序轉發給其他查詢環境。基於上述需求,采用 59 最為合適。
59
A. 責任鏈模式
B. 橋接模式
C. 裝飾模式
D. 適配器模式

●某公司欲開發一套窗體圖形界面類庫。該類庫需要包含若干預定義的窗格(Pane) 對象,例如TextPane、ListPane等,窗格之間不允許直接引用。基於該類庫的應用由一個包含一組窗格的窗口組成,並需要協調窗格之間的行為。基於該類庫,在不引用窗格的前提下實現窗格之間的協作,應用開發者應采用 60 最為合適。
60
A. 備忘錄模式
B. 中介者模式
C. 訪問者模式
D. 迭代器模式

●某公司開發一個文檔編輯器,該編輯器允許在文檔中直接嵌入圖形對象,但開銷很大。用戶在系統設計之初提出編輯器在打開文檔時必須十分迅速,可以暫時不顯示當前頁面以外的圖形。針對這種需求,公司可以采用 61 避免同時創建這些圖形對象。
61
A. 代理模式
B. 外觀模式
C. 橋接模式
D. 組合模式

09年系統架構設計師

●某軟件公司欲開發一個Windows平台上的公告板系統。在明確用戶需求后,該公司的架構師決定采用Command模式實現該系統的界面顯示部分,並設計UML類圖如下圖所示。圖中與Command模式中的Invoker角色相對應的類是 30 ,與ConcreteCommand角冉相對應的類是 31

30
A. Command
B. Menultem
C. Open
D. BulktinBoardScreen
31
A. Command
B. Menultem
C. Open
D. BulktinBoardScreen

●某軟件公司基於面向對象技術開發了一套圖形界面顯示構件庫Visual Component。在使用該庫構建某圖形界面時,用戶要求為界面定制一些特效顯示效果,如帶滾動條、能夠顯示藝術字體的透明窗體等。針對這種需求,公司采用 60 最為靈活。
60
A. 橋接模式
B. 命令模式
C. 組合模式
D. 裝飾模式

●某軟件公司承接了為某工作流語言開發解釋器的工作。該工作流語言由多種活動節點構成,具有類XML的語法結構。用戶要求解釋器工作時,對每個活動節點進行一系列的處理,包括執行活動、日志記錄、調用外部應用程序等,並且要求處理過程具有可擴展能力。針對這種需求,公司采用 61 最為恰當。
61
A. 適配器模式
B. 迭代器模式
C. 訪問者模式
D. 觀察者模式

中英文對照

Adapter/Adaptor 適配器模式
Builder 建造者模式
Bridge 橋接(梁)模式
Command 命令模式
Composite 組合模式
Decorator 裝飾模式
Facade 門面模式
Flyweight 享元模式
Interpreter 解釋器模式
Iterator 迭代器模式
Mediator 中介者模式
Memento 備忘錄模式
Proxy 代理模式
Prototype 原型模式
Singleton 單例(體)模式
Strategy 策略模式
Visitor 訪問者模式

參考答案

18年DABA
17年DCAD
16年CDCD
15年ABD
14年CCB
13年CA
12年AABDAC
11年CADBBA
10年ABABA
09年BCDC

歡迎關注公眾號,共同進步。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM