有时候我们的代码中为避免 NullPointerException 会出现很多的对Null的判断语句,而这些语句一旦多起来,我们的代码就会变的惨不忍睹,因此我们引入了空对象模式(Null Object Pattern)以此来使我们的代码变的更优雅一点.
第一步:创建一个抽象基类,代码如下:
![fb958c3b4f3e75ff491f4e3d1503345a.png](https://img-blog.csdnimg.cn/img_convert/fb958c3b4f3e75ff491f4e3d1503345a.png)
第二部:创建扩展上述类的具体类,其代码如下:
![630c8afc8ec1522e582096ba07f92b91.png](https://img-blog.csdnimg.cn/img_convert/630c8afc8ec1522e582096ba07f92b91.png)
第三部:创建一个CustomerFactory类,其代码如下:
创建客户的工厂类:如果客户名称可以查询出来,那么就返回真实的对象,如果不存在那么就返回空客户对象
![5007c4ae582fc7ec94e42f5a91b62381.png](https://img-blog.csdnimg.cn/img_convert/5007c4ae582fc7ec94e42f5a91b62381.png)
第四部:创建演示Demo程序,运行结果如下图所示
![c08409e501d8d813cb85da445f6d7a02.png](https://img-blog.csdnimg.cn/img_convert/c08409e501d8d813cb85da445f6d7a02.png)
通过上述我们得出空对象设计模式类图如下:
![d37f9f73d9d6073631ac5324c375e50d.png](https://img-blog.csdnimg.cn/img_convert/d37f9f73d9d6073631ac5324c375e50d.png)
空对象设计模式的优点:
(1)它可以加强系统的稳固性,能有有效地防止空指针报错对整个系统的影响,使系统更加稳定。
(2)它能够实现对空对象情况的定制化的控制,能够掌握处理空对象的主动权。
(3)它并不依靠Client来保证整个系统的稳定运行。
(4)它通过isNull对==null的替换,显得更加优雅,更加易懂。