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!");
        }
    }
    
  • 相关阅读:
    Ajax服务端框架的综合示例
    《Microsoft Sql server 2008 Internals》读书笔记目录索引
    Pro ASP.NET MVC 3 Framework
    C#客户端的异步操作
    在.net中读写config文件的各种方法
    KMP算法分析
    asp.net 4.0 + 模板引擎(NVelocity)CMS
    mvc3
    开源 Asp.net mvc 用户中心开发计划
    JqueryCMS
  • 原文地址:https://www.cnblogs.com/kiqi/p/14223860.html
Copyright © 2011-2022 走看看