Groovy 设计模式 -- null对象模式
2018-04-05 20:57
302 查看
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.fieldorreference.method()You receive the dreadedNullPointerException. The null object pattern uses a special object representing null, instead of using an actualnull. 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()
相关文章推荐
- 设计模式【空对象模式NullObjectPattern】
- 设计模式之空对象模式--- Pattern Null Object
- C#面向对象设计模式学习笔记(5) - Prototype 原型模式(创建型模式)
- [设计模式](五):适配器模式(Adapter)[类适配器、对象适配器、接口适配器]
- C++设计模式5--单例模式Singleton--当前对象只有一个实例
- C++设计模式6--原型模式Prototype--原始对象的克隆
- Java设计模式之------值对象模式
- [导入]C#面向对象设计模式纵横谈(15):(行为型模式) Command 命令模式.zip(7.56 MB)
- [导入]C#面向对象设计模式纵横谈(19):(行为型模式) Observer 观察者模式.zip(10.27 MB)
- 黑马程序员:单态设计模式static(使类在内存只有一个实例对象)
- 面面向对象(上) 封装,继承,对象初始化流程,单例设计模式向对象(上) 封装,继承,对象初始化流程,单例设计模式
- [笔记]00面向对象设计模式与原则
- [设计模式笔记]三. 行为型模式--25. Visitor模式(访问者)对象行为型模式(二)
- 【设计模式】对象创建—创建型模式(2)
- 【软件工程】面向对象之设计模式
- 设计模式精解-第一章-面向对象范式(二)
- 设计模式--对象行为模式比较
- 转:设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- 设计模式-策略模式---Strategy(对象行为型)
- 设计模式学习笔记二:面向对象基础二