02.设计模式_NullObject模式

使用NULL OBJECT模式,我们可以确保返回的总是有效的对象,即使失败时也代表对象什么也不做。

下面以一个数据库查询的示例来演示空对象模式。

1.Employe实体对象空对象的接口

Employe.java

 1 package com.design.patterns01.nullobject;
 2 
 3 public interface Employee {
 4     public void pay();
 5     /**
 6      *使用匿名内部类是一种确保该类只有一个唯一的(NULL)实例。实际上不存在NullEmployee类本身
 7      */
 8     public static final Employee NULL = new Employee(){
 9         @Override
10         public void pay() {}
11     };
12 
13 }

2.数据库查询
DB.java

1 package com.design.patterns01.nullobject;
2 
3 public class DB {
4     public static Employee getEmployee(String name){
5         //这里为了测试只返回了Employee.NULL
6         return Employee.NULL;
7     } 
8 
9 }


3.测试空对象

TestEmployee

 1 package com.design.patterns01.nullobject;
 2 
 3 import static org.junit.Assert.assertEquals;
 4 
 5 import org.junit.Test;
 6 
 7 public class TestEmployee {
 8     @Test
 9     public void testNull(){
10         String name = "zhangsan";
11         Employee e = DB.getEmployee(name);
12         e.pay();
13         if(Employee.NULL == e) System.out.println("该对象是空对象!");
14         assertEquals(Employee.NULL, e);
15     }
16 
17 }
原文地址:https://www.cnblogs.com/zhangshiwen/p/4331371.html