版权声明:本文为博主原创文章,未经博主允许不得转载。有问题可以留言或者邮箱shusheng52@126邮箱联系 https://blog.csdn.net/xiaoshusheng10/article/details/87820310
设计模式:空对象模式
- 空对象模式简介:一个空对象取代null对象实例的检查,null对象不是检查空值,而是反应一个不做任何动作的关系。这样的null对象也可以在数据不可用的时候提供默认的行为
- 空对象模式成分:
- 对象抽象类
package com.fg.java.nullobject; public abstract class AbstractCustomer { protected String name; public abstract boolean isNil(); public abstract String getName(); }
- 真实对象实现类:
package com.fg.java.nullobject; public class RealCustomer extends AbstractCustomer { public RealCustomer(String name){ this.name = name; } @Override public boolean isNil() { return false; } @Override public String getName() { return name; } }
- 空对象实现类:提供一个默认的行为,避免null的校验。
package com.fg.java.nullobject; public class NullCustomer extends AbstractCustomer { @Override public boolean isNil() { return true; } @Override public String getName() { return "not Available in Customer database"; } }
- 工厂模式:判断是创建真实对象还是空对象。
package com.fg.java.nullobject; public class CustomerFactory { public static final String[] names = {"Rob","joe","Julie"}; public static AbstractCustomer getCustomer(String name){ for(int i=0;i<names.length;i++){ if(names[i].equalsIgnoreCase(name)){ return new RealCustomer(name); } } return new NullCustomer(); } }
- 对象抽象类
当我们知道自己需要的范围,超过范围提供统一的行为的时候,可以试试空对象模式,会给你不一样的惊喜。