• Java设计模式 _行为型模式_空对象模式


    一、空对象模式

    **1、空对象模式 **
    空对象模式(Null Object Pattern)是一种行为型模式。 通过为使用一个空对象而不是直接使用 null,进而避免 null可能带来的问题,如 NullPointerException。这种模式的主要目标是简化空值检查,使代码更加健壮和易于理解。

    2、实现思路
    (1)、定义基础的抽象类
    (2)、编写正常的实现类
    (3)、编写空对象的实现类
    (4)、定义对象工厂类,公国工厂产出对象,如果正常条件产出正常对象,非正常条件产出空对象
    (5)、使用工厂生成的对象,无需校验是否为空。

    二、代码示例

    1、示例场景
    狗工厂,不论是否存在该种类的狗都需要返回对象,正常条件返回正常狗,否则返回空狗。
    2、代码示例

    // 1、定义抽象类(狗抽象类)
    public abstract class Dog {
        protected String name;
        public abstract String getName();
        public abstract void setName(String name);
    }
    // 2.1、定义正常狗,正常实现方法
    public class RealDog extends Dog {
        public RealDog(String name){
            this.name =name;
        }
    
        @Override
        public String getName() {
            return name;
        }
    
        @Override
        public void setName(String name) {
            this.name = name;
        }
    }
    // 2.2、定义空狗,实现方法返回空字符串
    public class NullDog extends Dog {
        @Override
        public String getName() {
            return "";
        }
    
        @Override
        public void setName(String name) {
        }
    }
    // 3、实现狗工厂,根据条件返回狗的对象
    public class DogFactory {
        public String[] names = {"泰迪","俊介"};
    
        public Dog createDog(String name){
            for (String tempName:names){
                if (StringUtils.equals(tempName,name)){
                    return new RealDog(name);
                }
            }
            return new NullDog();
        }
    }
    // 4、测试
     public static void main(String[] args) {
            DogFactory dogFactory = new DogFactory();
            List<Dog> dogList = new ArrayList<>();
            dogList.add(dogFactory.createDog("泰迪"));
            dogList.add(dogFactory.createDog("阿拉斯加"));
            dogList.add(dogFactory.createDog("俊介"));
    
            dogList.forEach(item -> {
                System.out.println(item.getName());
            });
        }
    

    在这里插入图片描述

    由上图可看到,返回空狗的对象不会存在空指针问题。

    总结:
    空对象模式,主要作用为防止空指针的出现。通过使用空对象来代替null的方式,避免了null可能带来的问题。

    学海无涯苦作舟!!!

  • 相关阅读:
    android 在后台任务栏隐藏应用程序
    Js与Jq实战:第三讲:JavaScript对象编程
    【应用统计学】随机变量的概率分布,数学期望和方差及协方差
    GeoPandas和Matplotlib地图高亮显示——与中国建交的国家(不全)
    【Python】使用Python库中的pymysql执行SQL
    借助Web3盘活日本优质IP:UneMeta 与 OpenSea 的差异化竞争
    Android:Navigation使用safe args插件传递参数
    Spring基础:容器的创建与Bean注册
    服务器百万并发的原理与实现
    推送到gitlab仓库
  • 原文地址:https://blog.csdn.net/qq_34207422/article/details/139319448