Null Object Pattern

http://groovy-lang.org/design-patterns.html#_loan_my_resource_pattern

对于一些场景获得的对象为 null, 然后我们的使用的场景, 对null对象调用正常对象的方法, 导致报错。 因为null对象,没有对应的方法。

The Null Object Pattern involves using a special object place-marker object representing null. Typically, if you have a reference to null, you can’t invoke reference.field or reference.method() You receive the dreaded NullPointerException. The null object pattern uses a special object representing null, instead of using an actual null. This allows you to invoke field and method references on the null object. The result of using the null object should semantically be equivalent to doing nothing.

例子

构造一个null对象,让null对象,也具有正常的属性。

class NullJob extends Job { def salary = 0 } people << new Person(name: 'Harry', job: new NullJob()) biggestSalary = people.collect { p -> p.job.salary }.max() println biggestSalary

类比

此类方法,同jquery中使用 选择器没有获得到 真实对象, 结果却得到一个null对象类似。 其调用jquery对象的常规方法,仍然有效, 例如 .length()

转载于:https://www.cnblogs.com/lightsong/p/8724264.html

Groovy 设计模式 -- null对象模式相关推荐

  1. Null对象模式的用法

    1. 什么是Null对象模式?为什么要采用Null对象? 个人理解,所谓模式就是程序员们在编程的时候对一些类似问题总结出的通用解决方法或思路.因此,即使你的问题非常吻合某种设计模式所对应的问题,也不能 ...

  2. 被遗忘的设计模式——空对象模式(Null Object Pattern)

    一.Pattern name Provide an object as a surrogate for the lack of an object of a given type. The Null ...

  3. 被遗忘的设计模式——空对象模式(转载)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qiumengchen12/articl ...

  4. Groovy 设计模式 -- 抽象工厂 模式

    抽象工厂 https://blog.csdn.net/wyxhd2008/article/details/5597975 首先来看看这两者的定义区别: 工厂模式:定义一个用于创建对象的借口,让子类决定 ...

  5. php7 空对象,PHP设计模式之空对象模式(Null Object)代码实例大全(26)

    目的 空对象模式不属于 GoF 设计模式,但是它作为一种经常出现的套路足以被视为设计模式.它具有如下优点: 客户端代码简单 可以减少报空指针异常的几率 测试用例不需要考虑太多条件 返回一个对象或 nu ...

  6. 【设计模式】代理模式 ( 动态代理 | 模拟 Java 虚拟机生成对应的 代理对象 类 )

    文章目录 前言 一.模拟 JVM 生成对应的 代理对象 二.模拟 JVM 生成对应的 代理对象 完整流程展示 1.目标对象接口 2.被代理对象 3.调用处理程序 4.模拟 JVM 生成的代理对象类 5 ...

  7. activexobject对象不能创建_【设计模式】建造者模式:你创建对象的方式有它丝滑吗?...

    目录 什么是建造者模式 为什么要使用建造者模式 构造函数创建对象 set方式构建对象 java实现建造者模式 第一种实现方式 第二种方式 建造者模式与构造函数的对比 建造者模式与工厂模式的对比 总结 ...

  8. PHP设计模式--数据访问对象模式

    最简单的Web部件和最复杂的在线电子商务Web站点具有一个共同点:它们都要处理数据.大量的编程都设计数据的访问和操作.随着Internet的发展.脸颊存储设备应用数据的大量增长.对分析论的更深入理解以 ...

  9. 【转】设计模式 ( 十七) 状态模式State(对象行为型)

    设计模式 ( 十七) 状态模式State(对象行为型) 1.概述 在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理.最直接的解决方案是将这些所有可能发生的情况全都考虑到.然后使用if... ...

  10. 设计模式笔记二十二:空对象模式

    原文:http://www.runoob.com/design-pattern/ 少许个人理解,如有错误请指出.欢迎一起讨论. 在空对象模式(Null Object Pattern)中,一个空对象取代 ...

最新文章

  1. 程序员版《我和我的家乡》,拼搏奋斗的IT人是家乡的骄傲!
  2. “21天好习惯”第一期-8
  3. cin判断读取结束 C++语言
  4. 魔鬼定律:你一偷懒,必然出错,麒麟LINUX新版本无法安装
  5. Chirp信号基础知识及matlab实现
  6. C++统计输入字符串各个大写字母的个数
  7. 2022最新QQ协议登陆,QQ密码加密源代码
  8. 监控视频平台LiveNVR如何给摄像头视频添加文字水印和图片水印
  9. 计算机科学对自然观的影响,浅谈自然辩证法对计算机科学研究的意义
  10. mac pro词典无法使用问题
  11. python读取读取txt文件与写入txt文件
  12. 遗传算法实现图像分割(MATLAB)
  13. Java官方教程(三-1)运算符 operator(2020.12.18)
  14. trace系列0 - 概述
  15. 分页计算起始页和总页数
  16. Unix/Linux头文件说明
  17. Java学习之一切都是对象(二)
  18. 北师大 外国教育史-1(古希腊教育)
  19. 在Windows Server 2008系统环境下无损调整分区
  20. On Rate Distortion Optimization Using SSIM

热门文章

  1. 在 linux 下安装 Mysql 的详细过程
  2. Vquery PHP 简单爬虫类
  3. AngularJS 快速入门
  4. PowerDesigner之PDM(物理概念模型)
  5. Eclipse下PHP开发 插件安装
  6. 使用脚本开启客户端远程桌面
  7. 笔记本重置找不到恢复环境_Win10 自带的疑问解答、备份、恢复还原、重置系统怎么使用?...
  8. EasyTouch的使用
  9. EntityTransaction
  10. class type