極簡設計模式-空物件模式

long2ge發表於2021-12-15

空物件模式 - Null Object Pattern

定義

  一個空物件取代NULL物件例項的檢查。NULL物件可以在資料不可用的時候提供預設的行為,屬於行為型設計模式。

結構中包含的角色

  1. Resource 抽象資源
  2. ConcreteResource 具體資源
  3. NullResource 空資源
  4. ResourceFactory 資源工廠

最小可表達程式碼

  ​abstract class Resource {}class ConcreteResource extends Resource {}class NullResource extends Resource {}class ResourceFactory{public static function getResourceById($id) : Resource
    ​{if ($id > 0) {return new ConcreteResource();}return new NullResource();}}

 ​$resource = ResourceFactory::getResourceById(0);
 ​var_dump($resource);

優點

  1. 減少空指標異常風險。
  2. 對空物件情況的定製化的控制。
  3. 定義isNull()顯得更加優雅,更加易懂。

缺點

  1. 會增加類的數量。

何時使用

  1. 需要用空物件來代替Null或undefined。
  2. 物件例項不存在的程式碼邏輯抽象出來。
  3. 部分例項不需要做任何處理。
本作品採用《CC 協議》,轉載必須註明作者和本文連結
Long2Ge

相關文章