《空对象模式(极简c++)》

本文介绍了空对象模式,一种通过创建空对象替代NULL或空值的设计模式。它简化代码逻辑但可能隐藏问题,实践中不建议广泛使用。给出了C++代码示例以展示如何应用此模式。

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

         本文章属于专栏- 概述 - 《设计模式(极简c++版)》-优快云博客


        本章简要说明空对象模式。本文分为模式说明、本质思想、实践建议、代码示例四个部分。

模式说明

  • 方案: 空对象模式是一种设计模式,它通过创建一个空对象来代替 NULL 或者空值。当需要一个对象却没有合适的实例时,空对象模式可以提供一个不执行任何动作但仍然具备正确行为的对象。
  • 优点:
    •  减少条件判断: 可以避免在代码中频繁地检查空值。
    •  简化代码逻辑: 通过提供一个默认的空对象,可以简化代码结构并降低代码复杂度。
  • 缺点:
    •  可能隐藏问题: 如果不小心使用了空对象,可能会掩盖实际存在的问题。
    •  不适用于所有情况: 空对象模式适用于某些特定情况,但不是所有情况都适用。

本质思想:空对象模式的本质思想是在缺少有效对象时,提供一个默认的“空”对象,使得客户端代码无需特殊处理空值情况,从而简化代码逻辑。

实践建议不建议使用,这里省去的代码检查空值以及简化的代码结构,很可能会在未来隐藏关键问题。极大地增加了运维成本

代码示例

#include <iostream>
#include <string>

// 基类 Bird
class Bird {
public:
    virtual void fly() const = 0;
};

// 具体鸟类 Sparrow
class Sparrow : public Bird {
public:
    void fly() const override {
        std::cout << "Sparrow is flying" << std::endl;
    }
};

// 空对象 NullBird
class NullBird : public Bird {
public:
    void fly() const override {
        // Do nothing
    }
};

int main() {
    Bird *bird1 = new Sparrow(); // 有实际鸟对象
    Bird *bird2 = new NullBird(); // 无实际鸟对象,使用空对象

    bird1->fly(); // 输出:Sparrow is flying
    bird2->fly(); // 无输出

    delete bird1;
    delete bird2;

    return 0;
}

/* 输出
Sparrow is flying
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值