???
++++++++++++++
第九章:?系統構架
++++++++++++++
182.一個系統可以(在重大的系統中也確實如此)同時出多種不同的構架類型.?以不同的
方式檢查同一系統|分析系統的不同部分|或使用不同級
別的分解,?都有可能發現不同的構架類型.
183.協同式的應用程序,?或者需要協同訪問共享信息或資源的半自治進程,?一般會采用
集中式儲存庫構架.
184.黑板系統使用集中式的儲存庫,?存儲非結構化的鍵/值對,?作為大量不同代碼元件之
間的通信集線器.
185.當處理過程可以建模|設計和實現成一系列的數據變換時,?常常會使用數據流(或管
道—過濾器)構架.
186.在批量進行自動數據處理的環境中,?經常會采用數據流構架,?在對數據工具提供大
量支持的平臺上尤其如此.
187.數據流構架的一個明顯征兆是:?程序中使用臨時文件或流水線(pipeline)在不同進
程間進行通信.
188.使用圖示來建模面向對象構架中類的關系.
189.可以將源代碼輸入到建模工具中,?逆向推導出系統的構架.
190.擁有大量同級子系統的系統,?常常按照分層構架進行組織.
191.分層構架一般通過堆疊擁有標準化接口的軟件組件來實現.
192.系統中每個層可以將下面的層看作抽象實體,?并且(只要該層滿足它的需求說明)不
關心上面的層如何使用它.
193.層的接口既可以是支持特定概念的互補函數族,?也可以是一系列支持同一抽象接口
不同底層實現的可互換函數.
194.用C語言實現的系統,?常常用函數指針的數組,?表達層接口的多路復用操作.
195.用面向對象的語言實現的系統,?使用虛方法調用直接表達對層接口的多嘴復用操作
.
196.系統可以使用不同的|獨特的層次分解模型跨各種坐標軸進行組織.
197.使用程序切片技術,?可以將程序中的數據和控制之間依賴關系集中到一起.
198.在并發系統中,?一個單獨的系統組件起到集中式管理器的作用,?負責啟動|停止和協
調其他系統進程和任務的執行.
199.許多現實的系統都會博采眾家之長.?當處理此類系統時,?不要徒勞地尋找無所不包
的構架圖;?應該將不同構架風格作為獨立但相關的實體
來進行定位|識別并了解.
200.狀態變遷圖常常有助于理清狀態機的動作.
201.在處理大量的代碼時,?了解將代碼分解成單獨單元的機制極為重要.
202.大多數情況下,?模塊的物理邊界是單個文件|組織到一個目錄中的多個文件或擁有統
一前綴的文件的集合.
203.C中的模塊,?由提供模塊公開接口的頭文件和提供對應實現的源文件組成.
204.對象的構造函數經常用來分配與對象相關的資源,?并初始化對象的狀態.?函數一般
用來釋放對象在生命期中占用的資源.
205.對象方法經常使用類字段來存儲控制所有方法運作的數據(比如查找表或字典)或維
護類運作的狀態信息(例如,?賦給每個對象一個標識符的
計數器).
206.在設計良好的類中,?所有的字段都應在聲明為private,?并用公開的訪問方法提供對
它們的訪問.
207.在遇到friend聲明時,?要停下來分析一下,?看看繞過類封裝在設計上的理由.
208.可以有節制地用運算符增強特定類的可用性,?但用運算符重載,?將類實現為擁有內
建算術類型相關的全部功能的類實體,?是不恰當的.
209.泛型實現不是在編譯期間通過宏替換或語言所支持的功能(比如C++模板和Ada的泛型
包)來實現,?就是在運行期間通過使用數據元素的指針
和函數的指針|或對象的多態性實現.
210.抽象數據類型經常用來封裝常用的數據組織方案(比如樹|列表或棧),?或者對用戶隱
藏數據類型的實現細節.
211.使用庫的目的多種多樣:?重用源代碼或目標代碼,?組織模塊集合,?組織和優化編譯
過程,?或是用來實現應用程序各種特性的按需載入.
212.大型的|分布式的系統經常實現為許多互相協作的進程.
213.對于基于文本的數據儲存庫,?可以通過瀏覽存儲在其中的數據,?破譯出它的結構.
214.可以通過查詢數據字典中的表,?或使用數據庫專有的SQL命令,?比如show?table,?來
分析關系型數據庫的模式.
215.識別出重用的構架元素后,?可以查找其最初的描述,?了解正確地使用這種構架的方
式,?以及可能出現的誤用.
216.要詳細分析建立在某種框架之上的應用程序,?行動的最佳路線就是從研究框架自身
開始.
217.在閱讀向導生成的代碼時,?不要期望太高,?否則您會感到失望.
218.學習幾個基本的設計模式之后,?您會發現,?您查看代碼構架的方式會發生改變:?您
的視野和詞匯將會擴展到能夠識別和描述許多通用的形
式.
219.頻繁使用的一些模式,?但并不顯式地指出它們的名稱,?這是由于構架性設計的重用
經常先于模式的形成.
220.請試著按照底層模式來理解構架,?即使代碼中并沒有明確地提及模式.
221.大多數解釋器都遵循類似的處理構架,?圍繞一個狀態機進行構建,?狀態機的操作依
賴于解釋器的當前狀態|程序指令和程序狀態.
222.多數情況下,?參考構架只是為應用程序域指定一種概念性的結構,?具體的實現并非
必須遵照這種結構.