当前位置: 首页 > news >正文

设计模式系列(图文解析,附带源码)- 空对象

空对象(Null)

Intent

使用什么都不做

的空对象来代替 NULL。

一个方法返回 NULL,意味着方法的调用端需要去检查返回值是否是 NULL,这么做会导致非常多的冗余的检查代码。并且如果某一个调用端忘记了做这个检查返回值,而直接使用返回的对象,那么就有可能抛出空指针异常。

Class Diagram


Implementation

public abstract class AbstractOperation {
    abstract void request();
}
public class RealOperation extends AbstractOperation {
    @Override
    void request() {
        System.out.println("do something");
    }
}
public class NullOperation extends AbstractOperation{
    @Override
    void request() {
        // do nothing
    }
}
public class Client {
    public static void main(String[] args) {
        AbstractOperation abstractOperation = func(-1);
        abstractOperation.request();
    }

    public static AbstractOperation func(int para) {
        if (para < 0) {
            return new NullOperation();
        }
        return new RealOperation();
    }
}

相关文章:

  • 设计模式系列(图文解析,附带源码) - 命令
  • 设计模式系列(图文解析,附带源码) - 模板方法
  • 设计模式系列(图文解析,附带源码) - 生成器
  • 设计模式系列(图文解析,附带源码) - 适配器
  • 一文搞定设计模式!五万字超详细解析!带着耐心点进来!
  • 一个系列搞定MyBatis:MyBatis配置动态SQL语句基础
  • 一个系列搞定MyBatis:MyBatis快速上手增删改查
  • 一个系列搞定MyBatis:Mybatis多表查询
  • PropertyPlaceholderConfigurer 用法超详细解析!
  • JavaFX之WebView超详细解析!
  • javafx之webEngine超详细解析
  • mybatis-plus进阶教程!超详细使用方法解析!
  • mybatis-plus入门教程!看完必懂!超详细解析!
  • Mybatis-Plus中的代码生成器AutoGenerator超详细解析!完整配置!
  • Mybatis plus关闭驼峰命名,防止出现查询为Null!四种方法超详细解析!
  • 2017届校招提前批面试回顾
  • C++入门教程(10):for 语句
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • idea + plantuml 画流程图
  • Iterator 和 for...of 循环
  • java8 Stream Pipelines 浅析
  • JavaScript设计模式之工厂模式
  • Java教程_软件开发基础
  • jdbc就是这么简单
  • mysql常用命令汇总
  • Next.js之基础概念(二)
  • Windows Containers 大冒险: 容器网络
  • 阿里云应用高可用服务公测发布
  • 初识 webpack
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 记录一下第一次使用npm
  • 使用Gradle第一次构建Java程序
  • 我的业余项目总结
  • ​ssh免密码登录设置及问题总结
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #AngularJS#$sce.trustAsResourceUrl
  • #前后端分离# 头条发布系统
  • $.ajax()参数及用法
  • (¥1011)-(一千零一拾一元整)输出
  • (C语言)fread与fwrite详解
  • (二)构建dubbo分布式平台-平台功能导图
  • (四)linux文件内容查看
  • (算法)求1到1亿间的质数或素数
  • .“空心村”成因分析及解决对策122344
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .net Application的目录
  • @angular/cli项目构建--http(2)
  • @vue/cli 3.x+引入jQuery
  • []sim300 GPRS数据收发程序
  • [383] 赎金信 js
  • [C++] cout、wcout无法正常输出中文字符问题的深入调查(1):各种编译器测试
  • [CSS]CSS 字体属性
  • [Django ]Django 的数据库操作
  • [exgcd] Jzoj P1158 荒岛野人
  • [flask]http请求//获取请求体数据