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

空对象模式 - 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
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

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