码迷,mamicode.com
首页 > 其他好文 > 详细

07_空对象模式

时间:2018-02-04 00:30:04      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:param   项目   get   html   inf   preview   idt   ddd   映射   

空对象模式


空对象模式(Null Object Pattern)是通过实现一个默认无意义的对象来避免null值得出现,简单的说,就是为了避免在程序中出现null值判断而诞生的一种常用的设计方法。

空对象模式的例子
我们写一个听动物声音的模拟程序,代码如下:

定义动物接口

package cn.african.nullObjectPattern;

public interface Animal {
    public void makeSound();
}

定义小狗

package cn.african.nullObjectPattern;

public class Dog implements Animal {
    @Override
    public void makeSound() {
        System.out.println("汪汪汪");
    }
}
然后在定义一个人来听动物的叫声。

听动物叫声的人

package cn.african.nullObjectPattern;

public class Person {
    public void hear(Animal animal){
        if(animal != null){
            animal.makeSound();
        }
    }
}
可见,人在听动物声音的时候,都要对动物进行非空判断。
但是我们这样思考:在一个完整的系统中,animal对象是如何产生的?什么原因会产生null值?如果我们能够控制住这个null的产生,是不是就可以去掉这个if的非空判断了?
好,我们编写一个更完美的程序,增加一个NullAnimal类

增加一个NullAnimal

package cn.african.nullObjectPattern;

public class NullAnimal implements Animal {
    @Override
    public void makeSound() {}
}
增加了NullAnimal类后,在Person类中就不需要"animal != null"这句话了,到时候我们调Person中的hear方法传入的参数要么是Dog对象,要么是NullAnimal对象,就不需要在hear中进行空值判断了。
想象一个Web项目中,animal对象可能是由MVC框架映射产生,我们只要定义一个默认的映射对象是NullXXX,就可以解决空值判断问题。

07_空对象模式

标签:param   项目   get   html   inf   preview   idt   ddd   映射   

原文地址:https://www.cnblogs.com/africancu/p/8411048.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!