有时候我们的代码中为避免 NullPointerException 会出现很多的对Null的判断语句,而这些语句一旦多起来,我们的代码就会变的惨不忍睹,因此我们引入了空对象模式(Null Object Pattern)以此来使我们的代码变的更优雅一点.
第一步:创建一个抽象基类,代码如下:
package com.test;
|
第二步:创建扩展上述类的具体类,其代码如下:
package com.test; /** |
第三步:创建一个CustomerFactory
类,其代码如下:
/** * * @author 欧阳飘 * 创建客户的工厂类:如果客户名称可以查询出来,那么就返回真实的对象,如果不存在那么就返回空客户对象 */ public class CustomerFactory { public static final String[] customNames = {"jack", "ouyang", "LaLa"}; public static AbstractCustomer getCustomer(String name){ for (int i = 0; i < customNames.length; i++) { if (customNames[i].equalsIgnoreCase(name)){ return new RealCustomer(name); } } return new NullCustomer(); } } |
第四步:创建演示Demo程序,运行结果如下图所示
通过上述我们得出空对象设计模式类图如下:
空对象设计模式的优点:
(1)它可以加强系统的稳固性,能有有效地防止空指针报错对整个系统的影响,使系统更加稳定。
(2)它能够实现对空对象情况的定制化的控制,能够掌握处理空对象的主动权。
(3)它并不依靠Client来保证整个系统的稳定运行。
(4)它通过isNull对==null的替换,显得更加优雅,更加易懂。