敏捷式軟體開發 (Agile Software Development) – NULL OBJECT模式

來源:互聯網
上載者:User

標籤:

考慮以下代碼

Employee e = Db.GetEmployee("Bob");if(e != null && e.IsTimeToPay(today)){    e.Pay();}

  大多數人曾經由於忘記對null進行檢查而受挫。該管用手法雖然常見,但卻是醜陋且易出錯的。

  通過讓Db.GetEmployee拋出一個異常而不是返回null,可以減少出錯的可能性。不過,try/catch塊對比null的檢查更加醜陋。

  可以使用NULL OBJECT模式來解決這些問題。通常,該模式會消除對null進行檢查的需要,並且有助於簡化代碼。

 

  Employee變成了一個且有兩個實現的介面。EmployeeImplementation是正常的實現。它包含Employee對象被期望擁有的所有方法和變數。當Db.GetEmployee在資料庫中找到一個僱員時,就返回一個EmployeeImplementation執行個體。僅當Db.GetEmployee在資料庫中沒有找到僱員時才返回NullEmployee的執行個體。

結論

  那些長期使用基於C語言的人已經習慣與函數對於某種失敗返回null或者0。我們認為對這樣的函數的傳回值是需要測試的。NULL OBJECT模式改變了這一點。使用該模式,我們可以確保函數總是返回有效對象,及時在它們失敗時也是如此。這些代表失敗的對象“什麼也不做”。

 

 

摘錄自:[美]RobertC.Martin、MicahMartin著,鄧輝、孫鳴譯 敏捷式軟體開發 (Agile Software Development)原則、模式與實踐(C#版修訂版) [M]、人民郵電出版社,2013、254-256、

 

敏捷式軟體開發 (Agile Software Development) – NULL OBJECT模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.