空对象模式很简单,不怎么重要。一般与工厂模式结合使用。
工厂根据用户提供的条件创建具体的类,如果用户提供的条件工厂都不满足,那么就创建一个默认实现而不是返回null,这样的话程序还是可以继续运行下去。
示例代码:
package com.zhangxf.nullobject;
// 电脑接口
interface Computer {
public void show();
public default boolean isDefault() {
return false;
}
}
class LowGradeComputer implements Computer {
@Override
public void show() {
System.out.println("I am low grade computer");
}
public boolean isDefault() {
return true;
}
}
class MiddleGradeComputer implements Computer {
@Override
public void show() {
System.out.println("I am middle grade computer");
}
}
class HighGradeComputer implements Computer {
@Override
public void show() {
System.out.println("I am High grade computer");
}
}
class ComputerFactory {
public static Computer create(String grade) {
if (grade != null) {
if (grade.equalsIgnoreCase("low")) {
return new LowGradeComputer();
} else if (grade.equalsIgnoreCase("middle")) {
return new MiddleGradeComputer();
} else if (grade.equalsIgnoreCase("high")) {
return new HighGradeComputer();
}
}
return new LowGradeComputer();
}
}
public class NullObjectPattern {
public static void main(String[] args) {
Computer computer = ComputerFactory.create(args[0]);
computer.show();
}
}