博客
关于我
被遗忘的设计模式——空对象模式(转载)
阅读量: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/

    你可能感兴趣的文章
    ps命令详解
    查看>>
    PyTorch-Tutorials【pytorch官方教程中英文详解】- 1 Quickstart
    查看>>
    PS网页设计教程XVIII——在Photoshop中设计优雅的乡村酒店或餐厅的网页布局
    查看>>
    PS获取RGB和十六进制的颜色值
    查看>>
    PyTorch 的 10 条顶级知识点
    查看>>
    PS辅助工具Assistor PS
    查看>>
    pt-archiver 归档历史数据及参数详解
    查看>>
    pt-online-schema-change使用详解
    查看>>
    PyTorch 模型性能分析和优化 — 第 2 部分
    查看>>
    PTA L1-011 A-B
    查看>>
    pta l2-1紧急救援(Dijkstra)
    查看>>
    pta求阶乘序列前n项和_学霸整理——求数列的通项公式解法集锦,转化、归纳一文全懂...
    查看>>
    SpringBoot中集成Redis实现对redis中数据的解析和存储
    查看>>
    pthread_create导致的程序崩溃
    查看>>
    ptyhon POSIX
    查看>>
    public private protected default小结
    查看>>
    PublicCMS怎么用金蝶Apusic Application Server部署
    查看>>
    publish over ssh、 Kubernetes Continuous Deploy插件
    查看>>
    PubMed详解-ChatGPT4o作答
    查看>>
    Pubsub Extensions for Smack
    查看>>