空对象模式(Null Object Pattern)
2016-06-15 23:20
483 查看
空对象模式:用一个空对象来取代null实例的检查,空对象实现一个不做任何动作的关系。(消除如if(Object == null) 这样的检查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,而是返回空对象,这样代码会比使用条件判断更加"优雅"。
相关文章推荐
- ios学习路线—Objective-C(KVO)
- android群英传objectAnimator的问题
- ios学习路线—Objective-C(KVC)
- ios学习路线—Objective-C(Extension)
- 【ReactNative】undefined is not an object(evaluating 'this.props.navigator')
- ios学习路线—Objective-C(Protocol)
- ios学习路线—Objective-C(Category)
- Scala伴生类Class和伴生对象Object的区别
- Objective-C动画学习之iOS Animation
- ios学习路线—Objective-C(深浅拷贝)
- ios学习路线—Objective-C(检查内存泄露方式(Instruments))
- ios学习路线—Objective-C(检查内存泄露方式(Enable NSZombie Objects))
- ios学习路线—Objective-C(检查内存泄露方式(Static Analyzer))
- ios学习路线—Objective-C(堆(heap)和栈(stack))
- 关于Object=null
- ios学习路线—Objective-C(装箱和拆箱)
- JSONObject返回到前端转化出错
- js如何打印object对象
- iOS开发:Object-C的反射机制
- ios学习路线—Objective-C(属性修饰符)