對于如何為可擴展的標記語言(XML)將文檔對象模型 (DOM) 封裝在一個包裝類中的解決方案,請參考此文,這使你能夠更容易地與一個XML文件進行交互作用,而不需要知道DOM的細節。
4. 狀態監視問題
良好的基于組件的開發技術會頻繁地要求無狀態的對象。無狀態對象沒有保持的屬性,只有方法。你可以訪問一個無狀態的組件,執行方法,然后不需要獲取方法調用間的任何數據就可以完成處理。
有一些OOP方面的文章提出沒有屬性的對象就不是對象。 但是我們現在忽略這個語義上的問題,你可以創建有方法而沒有屬性的類。當你從事COM+或Web開發時,經常會需要這樣做。一個ASP頁面可以在一個組件上執行一個方法來完成一個特殊的處理,然后再釋放組件,不用為管理對象狀態而費心。
5. 傳遞參數的可擴展性
參數提供了類的方法之間傳遞信息的途徑。你需要用參數向方法傳遞任何必要的數據,特別是當你需要無狀態對象的時候。
例如,無狀態對象Customer 的PlaceOrder方法要求把客戶的信息作為參數傳遞給它,然后PlaceOrder方法就用這個信息來完成必要的處理。
當定義方法的參數時,一定要使它們可以擴展。例如,下面這行代碼是不可擴展的:
Public Function PlaceOrder(sLastName as String, sFirstName as String, sAddress as String)
要想調用這個方法你必須傳遞這3個參數。但是如果你以后決定在定單上還需要電話號碼,就必須修改函數簽名,這就破壞了兼容性以及每個調用此方法的代碼段。為了防止這個問題的發生,一個更好的解決方法是:在一個容器中傳遞參數。你可以使用記錄集、變量數組或 XML字符串來傳遞更普通的參數。
當轉移到.NET時,這個技巧就不是十分必要了,因為在.NET中你可以進行函數裝載,這樣就可以具有兩套不同參數的同一個函數:
Public Function PlaceOrder(sLastName _
as String, sFirstName as String, sAddress as String)
Public Function PlaceOrder(sLastName _
as String, sFirstName as String, _
sAddress as String, sPhone as String)
文章來源于領測軟件測試網 http://www.kjueaiud.com/