跳到主要内容

二十六、空对象模式 ( Null Object Pattern )

在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查

Null 对象不是检查空值,而是反应一个不做任何动作的关系,这样的 Null 对象也可以在数据不可用的时候提供默认的行为。

在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的地方

实现

我们将创建一个定义操作(在这里,是客户的名称)的 AbstractCustomer 抽象类,和扩展了 AbstractCustomer 类的实体类

工厂类CustomerFactory 基于客户传递的名字来返回 RealCustomerNullCustomer 对象

NullPatternDemo ,我们的演示类使用 CustomerFactory 来演示空对象模式的用法

 

范例

1. 创建一个抽象类 AbstractCustomer

// author: pottercoding.cn 程序员波特,程序员编程资料站(pottercoding.cn)
// Copyright © 2015-2065 pottercoding.cn. All rights reserved.
package com.pottercoding.gof;
public abstract class AbstractCustomer
protected String name;
public abstract boolean isNil();
public abstract String getName();

2. 创建扩展了上述类的实体类

RealCustomer

// author: pottercoding.cn 程序员波特,程序员编程资料站(pottercoding.cn)
// Copyright © 2015-2065 pottercoding.cn. All rights reserved.
package com.pottercoding.gof;
class RealCustomer extends AbstractCustomer
public RealCustomer(String name) {
this.name = name;
}
@Override
public String getName() {
return name;
}
@Override
public boolean isNil() {
return false;
}