标签:
空对象模式:用一个空对象来取代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,而是返回空对象,这样代码会比使用条件判断更加"优雅"。
标签:
原文地址:http://www.cnblogs.com/13jhzeng/p/5589401.html