《设计模式之禅》--空对象模式
非空校验一直是一个麻烦的问题,此模式可以稍微缓解
例:
//定义动物接口 public interface Animal {public void makeSound(); }//定义一个小狗 class Dog implements Animal {public void makeSound() {System.out.println(“Wang Wang Wang !”);} }
public class Person {//听到动物叫声public void hear(Animal animal) {if (animal != null) {animal.makeSound();}} }
增加一个NullAnimal
class NullAnimal implements Animal {public void makeSound() {} }
这样在Person类中就不需要“animal!=null”这句话了,疑问我们提供了一个实现接口的所有方法,不会再产生null对象。
animal对象可能由MVC框架映射产生,我们只要定义一个默认的映射对象是NullAnimal,就可以解决空值判断的问题,提升代码的可读性
《设计模式之禅》--空对象模式相关推荐
- 设计模式のNullObjectPattern(空对象模式)----行为模式
一.产生背景 在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查.Null 对象不是检查空值,而是反应一个不做任何动作的关系.这样的 Null 对象也可 ...
- php7 空对象,PHP设计模式之空对象模式(Null Object)代码实例大全(26)
目的 空对象模式不属于 GoF 设计模式,但是它作为一种经常出现的套路足以被视为设计模式.它具有如下优点: 客户端代码简单 可以减少报空指针异常的几率 测试用例不需要考虑太多条件 返回一个对象或 nu ...
- 设计模式笔记二十二:空对象模式
原文:http://www.runoob.com/design-pattern/ 少许个人理解,如有错误请指出.欢迎一起讨论. 在空对象模式(Null Object Pattern)中,一个空对象取代 ...
- Java进阶篇设计模式之十三 ---- 观察者模式和空对象模式
前言 在上一篇中我们学习了行为型模式的备忘录模式(Memento Pattern)和状态模式(Memento Pattern).本篇则来学习下行为型模式的最后两个模式,观察者模式(Observer P ...
- Java进阶篇设计模式之十三——观察者模式和空对象模式
简介 观察者模式又叫发布-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式.源-监听器(Source/Listener)模式或从属者(Dependents)模式. ...
- java观察者模式异步notify_Java进阶篇设计模式之十三 ---- 观察者模式和空对象模式...
前言 在上一篇中我们学习了行为型模式的备忘录模式(Memento Pattern)和状态模式(Memento Pattern).本篇则来学习下行为型模式的最后两个模式,观察者模式(Observer P ...
- 设计模式之空对象模式
空对象模式 空对象模式是通过实现一个默认的无意义对象来避免null值出现, 简单地说,就是为了避免在程序中出现null值判断而诞生的一种常用设计方法. 举个简单的例子, 一个听动物叫声的模拟程序: 动 ...
- 被遗忘的设计模式——空对象模式(转载)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qiumengchen12/articl ...
- 被遗忘的设计模式——空对象模式(Null Object Pattern)
一.Pattern name Provide an object as a surrogate for the lack of an object of a given type. The Null ...
- 设计模式之禅【代理模式】
真刀实枪之代理模式 我是游戏至尊 "最近几年王者荣耀的热度飙升,自己打时可以体验到其中的升级乐趣,但是时间过得很快啊!自己不想打,找代练,好主意!" 作为一名程序员,先将打游戏这段 ...
最新文章
- NHibernate从入门到精通系列(7)——多对一关联映射
- 怎样理解js数组中indexOf()的用法与lastIndexOf
- 通过Github Teams进行代码仓库的权限访问控制
- 欧拉回路 欧拉路径
- String转换为int类型
- 【数学建模】通过调整飞行角度使飞机顺利飞行(Matlab)
- 移植gettimeofday
- 新版 世界地图 中文版地图 国界地图 高清全彩矢量地图 CDR 2021年整理制作
- 微信公众号群发模板消息占用每月4次群发次数吗
- 技嘉x79up4支持服务器内存吗,技嘉X79-UP4主板硬件规格解析
- 江飞 福州大学数学与计算机科学学院,强极值原理、第二边值问题解的唯一性.ppt...
- 《太极张三丰》原声音乐 320/mp3打包下载
- 20145236 《Java程序设计》第4周学习总结
- 新入手Seagate希捷1TB移动硬盘1t USB3.0一个
- DS二叉树——Huffman编码与解码(不含代码框架)
- iOS 根据银行卡号判断银行名称
- Docker入门学习教程
- 普吉岛自由行——泰囧准备篇
- Apache Dubbo(概念篇)
- Ubuntu服务器设置简体中文
热门文章
- 怎么退出python命令行cd找到txt文档_《python怎么读取txt文件》
- python 如何修改字典的key值_Python编程:如何把元组/字典作为参数传递给函数(附代码)...
- 单页面二改套后台,后台采用的是迅睿CMS框架
- Argon-Theme 一个非常好看的轻盈,简洁,美观的 WordPress 主题
- C# 使用Task执行异步操作
- 初窥JQuery(一)-选择符 【转】
- Node.js: 深入浅出Nodejs读书笔记
- wordpress二次开发技巧-functions.php篇
- 把Apache里面的网站和MySQL数据库移动到home盘
- centos7 安装 JDK环境