三种方法返回值为空的处理方式

本文探讨了在策略模式中遇到空策略时的不同处理方法,包括直接返回null、返回空对象和使用对象常量。作者强调了每种方法的优缺点,并提供了相应的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在学习策略模式时,给某方法传入参数key,返回对应的策略。此时存在key没有对应的策略,即该方法的返回值未空(null),对这种情况有不同的处理方式。

1、直接返回null

这种方式是最差劲的一种。
由于返回值定义为StrategyInterface类型,后续可能有其他操作,直接返回null会造成空指针异常。

 public static StrategyInterface getStrategy(String promotionKey){
        StrategyInterface si = PROMOTION_MAP.get(promotionKey);
        //若查询为null,直接返回null
        return si == null ? null: si;
    }

2、返回空对象

根据业务特点,放null的结果封装到一个空对象(该对象属于返回值类型)中,返回该空对象。
但由于该方法中可能会被频繁调用,会触发多次创建空对象的操作,而空对象不做任何事情,浪费了堆空间。

public static StrategyInterface getStrategy(String promotionKey){
        StrategyInterface si = PROMOTION_MAP.get(promotionKey);
        //把null封装到EmptyPromotionStrategy中,
        //且EmptyPromotionStrategy是StrategyInterface 的实现类
        return si == null ? new EmptyPromotionStrategy() : si;
    }

3、返回空对象常量

同样根据业务特点,将null的结果封装到一个空对象(该对象属于返回值类型)中。
既然空对象不做任何事情,可以将其置为对象常量,在任何一次调用中都返回该对象向量,不会影响业务逻辑。以下是部分代码

    //在类空间定义一个封装了空的对象常量
    private static final StrategyInterface EMPTY_STRATEGY = new EmptyPromotionStrategy();
    public static StrategyInterface getStrategy(String promotionKey){
        StrategyInterface si = PROMOTION_MAP.get(promotionKey);
    	//返回空常量
        return si == null ? EMPTY_STRATEGY : si;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值