空对象模式(Null Object Pattern)
Posted 没有梦想的小灰灰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了空对象模式(Null Object Pattern)相关的知识,希望对你有一定的参考价值。
空对象模式:用一个空对象来取代null实例的检查,空对象实现一个不做任何动作的关系。(消除如if(Object == null) 这样的检查null实例代码)
例子:
public abstract class Duck { public String name; public abstract void getName(); } public class ConcreteDuck extends Duck { public ConcreteDuck(String name) { this.name = name; } public void getName() { System.out.println("ConcreteDuck"); } } public class NullDuck extends Duck { public void getName() { } } public class Client { public static final String[] names = {"A","B","C"}; public static Duck getDuck(String name) { for(int i = 0; i < names.length;i++) { if(name[i].equalsIgnoreCase(name)) { return new ConcreteDuck(name); } } return new NullDuck(); } public static void main(String[] args) { Duck d1 = new Client.getDuck("A"); Duck d2 = new Client.getDuck("D"); System.out.println(d1.getName()); System.out.println(d2.getName());//没有name=D的Duck,空对象的getName方法不打印字符串 } }
如果要求的对象不存在,不是返回null,而是返回空对象,这样代码会比使用条件判断更加"优雅"。
以上是关于空对象模式(Null Object Pattern)的主要内容,如果未能解决你的问题,请参考以下文章
特例模式(Special Case Pattern)与空对象模式(Null Pointer Pattern)—— 返回特例对象而非 null