专栏首页烟草的香味设计模式之空对象模式

设计模式之空对象模式

空对象模式

空对象模式是通过实现一个默认的无意义对象来避免null值出现, 简单地说,就是为了避免在程序中出现null值判断而诞生的一种常用设计方法.

举个简单的例子, 一个听动物叫声的模拟程序:

动物代码:

听叫声的人:

现在我们想, 能不能把 animal 的空值判断去掉呢?我们增加一个 NullAnimal 类:

增加了NullAnimal类后, 在Person类中就不需要"animal != null"这句话了, 因为我们提供了一个实现接口的所有方法, 不会再产生null对象. 想象一个web项目中, animal对象可能由MVC框架映射产生, 我们只要定义一个默认的映射对象是NullAnimal, 就可以解决控制判断的问题, 提升代码的可读性. 这就是空对象模式, 非常简单, 但非常实用.


空对象模式是通过空代码实现一个接口或抽象类的所有方法, 以满足开发需求, 简化程序.

它如此简单, 以至于我们经常在代码中看到或使用, 对它已经熟视无睹了, 而它无论是 事前规划或事后重构, 都不会对我们的代码产生太大的冲击.

本文分享自微信公众号 - 烟草的香味(hujing-bc),作者:胡靖哥哥

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-01-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 有了 elseif 为什么还要 switch case

    你有没有想过既然有了if elseif, 为什么还要设计一个switch case的语法出来呢? 按理说, 一个语言的设计角度来说, 关键词越少越好吧, 而且多...

    烟草的香味
  • Python元组是什么

    列表用的比较多了,方法基本上都是常规的数组操作:对数组的增删改查。对了,还有Python列表最屌的操作,数组的切片操作。

    烟草的香味
  • js解决客户端与服务器时间不一致的问题

    最近在写一个项目时,要根据时间进行不同的展示,直接用new Date().getTime()获取当前时间,结果就出问题了。有些用户擅自修改自己的本地时间,导致获...

    烟草的香味
  • Nop常用知识点

    wfaceboss
  • 分享一款带尖角浮出 公告栏 样式

    这里所说的带尖角浮出公告栏就是指本站Devework.com上面logo右侧的广告栏,这个广告栏是纯用css+html打造的,没有使用图片。该代码最初来自大前端...

    Jeff
  • 用R语言检索相关期刊

    用户1359560
  • [9-13]Shell系列3——分支结构

    本文旨在复习shell实现分支结构的3种if语句和case多分支结构语句,以及补充if和case的执行效率

    py3study
  • 127个常用的JS代码片段,每段代码花30秒就能看懂(六)

    大家好,今天我继续给大家分享本系列文章的最后一部分,感谢你对本系列文章的持续关注,希望对你的日常工作有所帮助。

    前端达人
  • ElasticSearch是如何实现分布式的?

    在搜索这块,lucene 是最流行的搜索库。几年前业内一般都问,你了解 lucene 吗?你知道倒排索引的原理吗?现在早已经 out 了,因为现在很多项目都是直...

    李红
  • 黑客连卫星都抢,美国国安局慌得一比

    随着科技的高速发展,互联网早已遍布我们生活中大大小小各个角落。伴随着网络而生的便是各种安全问题,看似无所不能的黑客时时刻刻通过各种案例提醒我们要注重自身数据安全...

    FB客服

扫码关注云+社区

领取腾讯云代金券