博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重构——40引入Null对象(Introduce Null Object)
阅读量:6486 次
发布时间:2019-06-23

本文共 497 字,大约阅读时间需要 1 分钟。

引入Null对象(Introduce Null Object)

你需要再三检查某对象是否为null;将null值替换为null对象

一、动机

1、多态最根本的好处在于:你不必在向对象询问“你是什么类型”而后根据得到的答案调用对象的某个行为--你只管调用就是了,其它的一切多态机制会为你安排妥当

2、null对象一定是常量,可以使用Singleton来实现它们

3、关于Null对象模式,你可以在Woolf[Woolf]中找到更详细的介绍

二、做法

1、为源类建立一个子类,使其行为就像是源类的null版本。在源类和null子类中都加上isNull()函数

2、编译

3、找出所有“索取源对象却获得一个null”的地方。修改这些地方,使他们改而获得一个空对象

4、找出所有“将源对象和null作比较”的地方。修改这些地方,使他们调用isNull()函数

5、编译,测试

6、找出这样的程序点:如果对象不是null,做A动作,否则做B动作

7、对于每一个上述地点,在null类中覆写A动作,使其行为和B动作相同

8、使用上述被覆写的动作,然后删除掉“对象是否等于null”的条件测试

9、编译并测试

转载地址:http://zesuo.baihongyu.com/

你可能感兴趣的文章
企业项目开发--企业中的项目架构以及多环境分配(1)
查看>>
ZOJ 2412 Farm Irrigation
查看>>
C++语言基础(19)-模板的显式具体化
查看>>
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
查看>>
如何改变Android tab 的高度和字体大小
查看>>
hdu 2853
查看>>
VS2013 MVC Web项目使用内置的IISExpress支持局域网内部机器(手机、PC)访问、调试...
查看>>
Vue.js常用指令:v-show和v-if
查看>>
java自定义接口
查看>>
Codeforces Round #152 (Div. 2) B题 数论
查看>>
马云马化腾等大佬,是如何看待区块链的?
查看>>
10倍于行业增速!海尔冰箱套圈引领
查看>>
Java集合总结【面试题+脑图】,将知识点一网打尽!
查看>>
java基础(十) 数组类型
查看>>
小程序 Canvas绘图不同尺寸设备 UI兼容的两个解决方案
查看>>
产品规划,你通常规划多久的时间线?
查看>>
Android-MVP架构
查看>>
HTML5前端教程分享:CSS浏览器常见兼容问题
查看>>
Material Design之AppBarLayout
查看>>
让mysql不能为空的字段为空时也能插入
查看>>