【设计模式】--NULL OBJECT 模式
来源:互联网 发布:淘宝优站排名 编辑:程序博客网 时间:2024/06/06 03:22
1 丑陋的代码:
Employee e = DB.getEmployee("Tom");
if(e!=null && e.isTimeToPay(today))//丑陋且容易出错
e.pay();
2 一个优化的方法: DB.getEmployee 抛出一个异常 但是try/catch更加丑陋,而且要声明这些异常。
3 怎么办?看示例理解
public class DB { public static Employee getEmployee(String name){ //即使失败时也能返回一个有效的对象 return Employee.NULL; }}
实现方法:内部匿名类+接口
public interface Employee { public boolean isTimeToPay(Date payDate); public void pay(); /** * 匿名内嵌类:确保该类只有一个单实例 其他人无法创建NULL的其他实例。 */ public static final Employee NULL = new Employee() { @Override public boolean isTimeToPay(Date payDate) { return false; } @Override public void pay() { } };}
好处: 1 都会返回有效实例 2 代码逻辑统一,一致性 3 匿名内部类的使用防止创建多个NULL实例
代价: 1 设计复杂
阅读全文
0 0
- Null Object 设计模式
- Null Object设计模式
- Object Null 设计模式
- [设计模式]null object模式
- 【设计模式】--NULL OBJECT 模式
- 使用Null Object设计模式
- 设计模式--行为模式--NULL Object--Java
- 【设计模式攻略】行为型模式之Null Object模式
- 设计模式:空对象模式(Null Object Pattern)
- 设计模式之空对象(Null Object)模式
- 【设计模式 - 21】之空对象模式(Null Object)
- 【设计模式】空对象模式(Null Object Pattern)
- NULL OBJECT 模式
- 五. Null Object模式
- 五. Null Object模式
- Null Object模式
- NULL Object模式
- Null Object模式
- Aerospike 读写过程中对partition tree的引用计数的处理
- Address already in use: JVM_Bind <null>:8080 关于端口被占用的问题及解决方案
- 快速幂
- 【java】Object类有哪些公用方法
- css的三大特性
- 【设计模式】--NULL OBJECT 模式
- 将menu设计为可重用的子系统
- 51nod 1126 求递推序列的第N项【矩阵快速幂】
- 树形结构 数据库表设计
- JAVA学习心得
- 设计模式(16)——迭代器 Iterator
- CHAR与WCHAR字符串的转化
- 51nod 1627 瞬间移动 组合数
- oracle可视化建表网站