空对象模式 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. 部分实例不需要做任何处理。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~