博客
关于我
被遗忘的设计模式——空对象模式(转载)
阅读量:428 次
发布时间:2019-03-06

本文共 1721 字,大约阅读时间需要 5 分钟。

Null Object Pattern是一种设计模式,用于处理空对象的情况,使得程序更加稳定和用户友好。以下是对该模式的详细分析和优化后的代码解释:

Null Object Pattern分析

Null Object Pattern的主要思想是创建一个空对象(Null Object),来代替null,这样可以避免空指针异常,并让程序更加稳定。通过这种方式,系统能够更好地处理空对象的情况,并提供友好的提示给用户。

核心优势:

  • 稳定性:减少空指针异常,提高系统稳定性。
  • 主动权:系统掌握处理空对象的主动权,避免依赖客户端。
  • 用户体验:可以定制提示信息,提升用户体验。
  • 优化后的代码解释

    接口定义:

    interface Book {    boolean isNull();    void show();}

    空对象类:

    public class NullBook implements Book {    public boolean isNull() {        return true;    }    public void show() {        System.out.println("Sorry,未找到符合您输入的ID的图书信息,请确认您输入的不是非法值。");    }}

    具体实现类:

    public class ConcreteBook implements Book {    private int ID;    private String name;    private String author;    public ConcreteBook(int ID, String name, String author) {        this.ID = ID;        this.name = name;        this.author = author;    }    public void show() {        System.out.println(ID + "**" + name + "**" + author);    }    public boolean isNull() {        return false;    }}

    工厂类:

    public class BookFactory {    public Book getBook(int ID) {        Book book;        switch (ID) {            case 1:                book = new ConcreteBook(1, "设计模式", "GoF");                break;            case 2:                book = new ConcreteBook(2, "被遗忘的设计模式", "Null Object Pattern");                break;            default:                book = new NullBook();                break;        }        return book;    }}

    客户端代码:

    public class Client {    public static void main(String[] args) {        BookFactory bookFactory = new BookFactory();        Book book = bookFactory.getBook(-1);        book.show();    }}

    运行结果

    运行时,客户端将输出友好的提示信息,而不会抛出空指针异常。

    总结

    Null Object Pattern通过引入一个空对象,解决了空指针问题,使系统更加稳定且用户友好。它将主动权放在系统内部,减少了对客户端的依赖,是一个值得在实际开发中使用的设计模式。

    转载地址:http://vliuz.baihongyu.com/

    你可能感兴趣的文章
    Openstack(两控制节点+四计算节点)-1
    查看>>
    Openstack企业级云计算实战第二、三期培训即将开始
    查看>>
    OpenStack创建虚拟机实例实战
    查看>>
    OpenStack安装部署实战
    查看>>
    OpenStack的基本概念与架构详解
    查看>>
    Openstack的视频学习
    查看>>
    openstack虚拟机迁移live-migration中libvirt配置
    查看>>
    ORACEL学习--理解over()函数
    查看>>
    ORACLE Bug 4431215 引发的血案—原因分析篇
    查看>>
    oracle dblink结合同义词的用法 PLS-00352:无法访问另一数据库
    查看>>
    Oracle dbms_job.submit参数错误导致问题(ora-12011 无法执行1作业)
    查看>>
    oracle dg switchover,DG Switchover fails
    查看>>
    Oracle EBS环境下查找数据源(OAF篇)
    查看>>
    Oracle GoldenGate Director安装和配置(无图)
    查看>>
    oracle script
    查看>>
    Oracle select表要带双引号的原因
    查看>>
    Oracle SOA Suit Adapter
    查看>>
    Oracle Spatial空间数据库建立
    查看>>
    UML— 活动图
    查看>>
    Oracle Statspack分析报告详解(一)
    查看>>