空物件模式 - Null Object Pattern
定義
一個空物件取代NULL物件例項的檢查。NULL物件可以在資料不可用的時候提供預設的行為,屬於行為型設計模式。
結構中包含的角色
- Resource 抽象資源
- ConcreteResource 具體資源
- NullResource 空資源
- 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);
優點
- 減少空指標異常風險。
- 對空物件情況的定製化的控制。
- 定義isNull()顯得更加優雅,更加易懂。
缺點
- 會增加類的數量。
何時使用
- 需要用空物件來代替Null或undefined。
- 物件例項不存在的程式碼邏輯抽象出來。
- 部分例項不需要做任何處理。
本作品採用《CC 協議》,轉載必須註明作者和本文連結