Java 基础
Java 容器
Java 并发
设计模式
目录

空对象

# 空对象(Null)

# Intent

使用什么都不做

的空对象来代替 NULL。

一个方法返回 NULL,意味着方法的调用端需要去检查返回值是否是 NULL,这么做会导致非常多的冗余的检查代码。并且如果某一个调用端忘记了做这个检查返回值,而直接使用返回的对象,那么就有可能抛出空指针异常。

# Class Diagram


# Implementation

package com.code.design.example10;

public abstract class AbstractOperation {
    abstract void request();
}
1
2
3
4
5
package com.code.design.example10;

public class RealOperation extends AbstractOperation {
    @Override
    void request() {
        System.out.println("do something");
    }
}
1
2
3
4
5
6
7
8
package com.code.design.example10;

public class NullOperation extends AbstractOperation{
    @Override
    void request() {
        // do nothing
    }
}
1
2
3
4
5
6
7
8
package com.code.design.example10;

public class Main {
    public static void main(String[] args) {
        AbstractOperation abstractOperation = func(-1);
        abstractOperation.request();
    }

    public static AbstractOperation func(int para) {
        if (para < 0) {
            return new NullOperation();
        }
        return new RealOperation();
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15