空对象模式(三十)

一、定义

    空对象模式(NullObjectPattern)是通过实现一个默认的无意义对象来避免 null 值出现。

    简单地说,就是为了避免在程序中出现 null 值判断而诞生的一种常用设计方法。


二、实例

    我们直接通过一个例子来看看空对象模式是怎么回事吧。

1. 模拟一个动物叫声的程序
// 定义动物接口
public interface Animal {
    public void makeSound();
}
 
// 定义一个小狗
class Dog implements Animal {
    public void makeSound() {
        System.out.println("Wang Wang Wang!");
    }
}
2. 定义一个人来听动物叫声
public class Person {
    //听到动物叫声
    public void hear(Animal animal) {
        if(animal != null){
            animal.makeSound();
        }
    }
}
3. 分析

    输入参数 animal 是应该做空值判断这没有什么问题。但是,我们这样思考:在一个完整的系统中,animal 对象是如何产生?什么原因会产生 null 值?如果我们能够控制住 null 值的产生(在会产生 null 值的地方使用一个空对象替代),是不是就可以去掉这个空值判断了?这样,程序就可以不用进行频繁的空值判断了,代码也更清晰整洁。

4. 建立一个空对象
class NullAnimal implements Animal {
    public void makeSound(){
    }
}

    在产生 animal 对象的位置,我们提供一个默认的空对象返回代替 null,就可以解决空值判断的问题了,提升代码的可读性。


三、总结

    空对象模式是一个很简单实用的模式,它可以使代码更清晰和简洁,提升代码的可读性,但是我们也不要滥用它。一般,一个对象在很多地方都被使用到,都需要对其进行空值判断,代码因此产生很多空值判断的逻辑,我们就可以根据实际场景考虑使用空对象模式了。



查看更多:设计模式分类以及六大设计原则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值