前言:
假如在系統中null
散佈在有許多地方且null
有相對應的邏輯或行為.這時候就很適合使用NullObject Pattern
來解決,已Null Object取代null
邏輯.
Null可能引申出來問題
我們知道在.Net或Java中大部分都是參考類型,而null是參考類型的預設值,我們來看看以下程式.
1 | Person p = null; |
如果物件p
指向null
且取得p.Age
時就會throw NullReferenceException
,所以我們在使用一些參考類型物件前都會先判斷此物件是否為null,在執行後續邏輯.
在系統中某一兩個地方這樣判斷還好,但如果一直重複這樣的判斷會造成程式碼不必要的膨脹….
相較於「不帶有null邏輯」的程式碼,面對null邏輯往往需要花費更多心力.
範例程式
下面有段程式碼在calculate
方法中會判斷CartModel
物件是否為null並執行相對應邏輯