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

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

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

Employe.java

 package com.design.patterns01.nullobject;

 public interface Employee {
public void pay();
/**
*使用匿名内部类是一种确保该类只有一个唯一的(NULL)实例。实际上不存在NullEmployee类本身
*/
public static final Employee NULL = new Employee(){
@Override
public void pay() {}
}; }

2.数据库查询
DB.java

 package com.design.patterns01.nullobject;

 public class DB {
public static Employee getEmployee(String name){
//这里为了测试只返回了Employee.NULL
return Employee.NULL;
} }

3.测试空对象

TestEmployee

 package com.design.patterns01.nullobject;

 import static org.junit.Assert.assertEquals;

 import org.junit.Test;

 public class TestEmployee {
@Test
public void testNull(){
String name = "zhangsan";
Employee e = DB.getEmployee(name);
e.pay();
if(Employee.NULL == e) System.out.println("该对象是空对象!");
assertEquals(Employee.NULL, e);
} }

最新文章

  1. css3实现的动画效果
  2. Syntax highlighting in fenced code blocks
  3. entlib验证组件
  4. DP:Miking Time(POJ 3616)
  5. liux下ftp链接服务器的常用命令
  6. Netty4.0学习笔记系列之一:Server与Client的通讯
  7. CSS中的高度
  8. 集成容联:Warning! ivar size mismatch in PSUICollectionView_ - can't change the superclass.解决办法
  9. 将EXCEL中的列拼接成SQL insert插入语句
  10. Xcode好用的插件(随时更新)
  11. Linux之文件备份与恢复
  12. MSICE界面和功能分析
  13. Mac上配置maven+eclipse+spark开发环境
  14. Docker命令分类及使用场景分布(脑图)
  15. etcd 分布式数据库概念初探
  16. Scrum Meeting 10.23
  17. WebGL学习笔记二
  18. linux内核分析第八周-理解进程调度时机跟踪分析进程调度与进程切换的过程
  19. Python 执行命令行操作。
  20. 进程一些命令pstree,ps,pstack,top

热门文章

  1. DS树+图综合练习--二叉树之最大路径
  2. NGUI的数据绑定
  3. Javascript之类型转换(二)
  4. JS之滚动条效果
  5. Spring Boot下Druid连接池+mybatis
  6. go语言学习--go中闭包
  7. [UE4]运行模式
  8. [UE4]控制台命令,生成机器人
  9. 使用 keepalived 设置虚拟 IP 环境(转载)
  10. MySQL的用户密码过期功能