写代码的时候,遇到了好多Null的判断,突然想到了Null Object的模式,用了之后,确实发现少掉了好多的Null判断
下面是写完的类
private class SubfacDBTreeModel extends BDVoFcTreeModel {
public SubfacDBTreeModel(TreeNode root,Vector vos) {
super(root,vos);
}
public String getChildCode(int i) {
SubfacVO facVO = getSubFac(i);
return facVO.getPrimaryKey();
}
public String getFatherCode(int i) {
SubfacVO facVO=getSubFac(i);
String pk_father = facVO.getParentsubfac();
if(pk_father!=null && pk_father.trim().length()==0) {
pk_father=null;
}
return pk_father;
}
public String getNodeCode(int i) {
SubfacVO facVO=getSubFac(i);
return facVO.getCsubfaccode();
}
public String getNodeName(int i) {
SubfacVO facVO=getSubFac(i);
return facVO.getCsubfacname();
}
private SubfacVO getSubFac(int i) {
if (m_vecVOs == null || m_vecVOs.size() <= 0
|| i >= m_vecVOs.size() ) {
return new NullSubfacVO();
}
return (SubfacVO) m_vecVOs.elementAt(i);
}
/**
* Null 模式,减少判断
*/
private class NullSubfacVO extends SubfacVO {
public String getPrimaryKey() {
return null;
}
public String getParentsubfac() {
return null;
}
public String getCsubfaccode() {
return null;
}
public String getCsubfacname() {
return null;
}
}
}
如果不用null Object的话,要在getNodeName,getNodeCode,getChildCode,getFatherCode中加上
if (facVO == null ) {
return null;
}
的判断语句。
现在有个问题是我如果不新建一个Null Object的子类,而是用SubfacVO 类的默认行为来代替,是不是一样可行,因为这几个Get方法,本身如果没有调用过set的话,他一定会返回一个null的。
转过来一想,觉得如果用SubfacVO 的默认行为的话,是不是会造成很多迷惑,后来看代码的人感觉很蹊跷,虽然刷了一点小聪明,少写了好多。但是如果遇上式样变更,后期维护什么的,可能就会造成一些不必要的麻烦。看来某些聪明还是不要乱用的好:)
分享到:
相关推荐
在许多面向对象的程序设计...NullObject模式能够用来解决这一问题。本文阐述了NullObject模式及其实现方式,针对空目标的单一实例化策略,给出了改进措施。NullObject模式对去除重复检测和减少空引用异常有较明显的效果。
**C#对象为Null模式(Null Object Pattern)** 在软件开发中,经常遇到的一个问题是对象可能为null。这种情况下,如果我们尝试调用该null对象的方法或属性,就会引发`NullReferenceException`异常。为了解决这个问题...
第17章 NULL OBJECT模式 第18章 薪水支付案例研究:第一次迭代开始 第19章 薪水支付案例研究:实现 第四部分 打包薪水支付系统 第20章 包的设计原则 第21章 FACTORY模式 第22章 薪水支付案例研究(第2部分) 第五...
第21章 COMMAND模式和ACTIVE OBJECT模式:多功能与多任务 第22章 TEMPLATE METHOD模式和STRATEGY模式:继承和委托 第23章 FACADE模式和MEDIATOR模式 第24章 SINGLETON模式和MONOSTATE模式 第25章 NULL OBJECT模式 ...
第十七章 NULL OBJECT模式 第十八章 薪水支付案例研究:第一次迭代开始 第十九章 薪水支付案例研究:实现 第Ⅳ部分 打包薪水支付系统 第二十章 包的设计原则 第二十一章 FACTORY模式 第二十二章 薪水支付案例研究...
第17章 NULL OBJECT模式 第18章 薪水支付案例研究:第一次迭代开始 第19章 薪水支付案例研究:实现 第四部分 打包薪水支付系统 第20章 包的设计原则 第21章 FACTORY模式 第22章 薪水支付案例研究(第2部分) 第五...
首先,我们需要了解什么是NullObject模式。NullObject模式是一种设计模式,用于解决判空问题。在面向对象语言中,对对象的调用前需要使用判空检查,来判断这些对象是否为空,因为在空引用上无法调用所需方法。空对象...
NULL Object模式提供一个“空”对象,替代null值,简化代码中的null检查。 ### 函数命名有语法 遵循一致的命名规范,使函数名能反映其功能,提高代码可读性。 ### 去除只是内部状态不同的派生类 如果派生类只有...
4. **NullObject模式的应用**:当某个处理阶段无法执行时,可以使用NullObject模式的类作为替代,保证Pipeline的连续性,不会因为某个环节的缺失而导致整个处理流程中断。 5. **SQL Server集成**:在数据处理中,...
9. **NullObject模式**: 避免频繁的null检查,通过提供默认或空对象,简化逻辑处理。 #### 重构工具 为了高效地进行重构,可以借助以下工具: 1. **SourceMonitor**: 定期监控代码质量,设定并保存质量检查点。 2...
15. **利用“nameof”配合“NullObject”模式**:当检查对象是否为null时,使用`nameof`来获取属性名,结合NullObject模式提供更优雅的错误处理。 16. **利用“nameof”在异常消息中传递更多信息**:在抛出异常时,...
空对象模式(Null Object Pattern) 策略模式(Strategy Pattern) 模板模式(Template Pattern) 访问者模式(Visitor Pattern) 4. J2EE 模式 MVC 模式(MVC Pattern) 业务代表模式(Business Delegate ...
2. **默认值或空对象模式**:提供一个默认值或“占位符”对象,以便在实际值为null时使用。在Kotlin中,可以使用Elvis操作符 `object?.method() ?: defaultMethod()`,如果object为null,则执行defaultMethod。 3. ...
23种java版设计模式源码案例.zip 0.目录 创建型模式(creational) 简单工厂(simplefactory) 动态工厂(dynamic) ...空对象模式(null object) 策略模式(strategy) 模板模式(template) 访问者模式(visitor)
主要是介绍各种格式流行的软件设计模式,对于程序员的进一步提升起推进作用,有时间可以随便翻翻~~ 23种设计模式汇集 如果你还不了解设计模式是什么的话? 那就先看设计模式引言 ! 学习 GoF 设计模式的重要性 ...
BuildPipeline.BuildAssetBundle(Selection.objects, null, savaPath, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows); } } ``` 这段代码首先获取当前选中的CSV文件对象,然后将每个CSV文件的...