极简设计模式-空对象模式

空对象模式 - 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
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!