對null
進行操作會報空指針異常,null
沒有任何的行為。
空對象的概念
空對象有所代表對象的所有方法,如果調用空對象上的方法會返回表示無效的值。
空對象的用途
表示問題領域實體的對象
空對象的不足
有時候還是必須檢查對象是否為空對象
空對象例子——創建空對象
空對象一般是單例,
使用單例可以直接使用equals(Person.NULL)
或==Person.NULL
。
空對象例子——使用空對象
如果職位還沒有招到人則person
為空對象:
通過檢查職位的person
屬性是否為空對象來判斷職位是否空缺:
請仔細觀察,代碼有些地方還是需要檢查對象是否為空對象,不過有些地方就不需要,比如toString
。
自動創建空對象的例子——要求
如果使用的是接口則可以通過動態代理創建空對象。
、
自動創建空對象的例子——準備
自動創建空對象的例子——動態代理
模擬對象和樁
模擬對象和樁是空對象的變種。
模擬對象和樁的區別
區別在于程度。Mock Objects是輕量級和自測的,每個測試場景都會創建對應的Mock Object。
樁是重量型的和在測試中可以重復使用的。