zoukankan      html  css  js  c++  java
  • 设计模式拓展 之 空对象模式

    空对象模式:使用NullObject替代null值作为返回,避免额外的null检查和空指针异常
    核心:返回NullObject而非null值
    角色:

    • IObject:负责定义public属性和方法,包括:isNull()接口
    • ConcreteObject:真实对象
    • NullObject:当创建对象为null时,返回该对象。 - NullObject的方法中不进行正常的业务处理,而是反馈自定义的空值信息
      注解:@Nullable和@NotNull标签,用于标注参数是否可为空,告知程序员是否需要做空校验
      设计模式 - NullObject模式

    general

    // 空对象模式 - 对于同一个接口,具有两种实现(真实对象类 和 空对象类)
    // 当返回值为null时,则返回空对象类,空对象类中的方法不做实际业务处理,而是反馈自定义的空值信息(避免空指针异常)
    public class Test {
        public static void main(String[] args) {
            CarFactory carFactory = new CarFactory();
            ICar car = carFactory.createCar((int)(Math.random() * 100 * 1024));     // return (money > 10 * 1024)? new CarA() : new NullCar();
            car.run();
        }
    }
    
    // 功能接口
    public interface ICar {
        boolean isNull();
        void run();
    }
    
    // 真实对象类
    public class CarA implements ICar{
        @Override
        public boolean isNull() { return false;}
    
        @Override
        public void run() {
            System.out.println("正常业务逻辑 - The car is runing");
        }
    }
    
    // 空对象类
    public class NullCar implements ICar{
        @Override
        public boolean isNull() { return true;}
    
        @Override
        public void run() {
            System.out.println("空对象信息提示 - Not have a car, can't run!");
        }
    }
    
  • 相关阅读:
    (转)CString,int,string,char*之间的转换
    Nt函数原型
    VC 创建窗口
    设置网络延时大小
    利用寄存器进入栈值交换
    控制用户控件里面的值
    jquery animate()动画函数
    终于有点时间了
    JQuery学习笔记(三)遮罩层、阴影层
    jquery表格隔行换色
  • 原文地址:https://www.cnblogs.com/kiqi/p/14223860.html
Copyright © 2011-2022 走看看