面向对象设计模式学习笔记十装饰模式

装饰模式用于在运行时动态增加对象的功能,它提供了比继承更灵活的扩展对象的方式。当需要为已有对象添加新功能而不影响其结构时,装饰模式是一种有效的解决方案。本文介绍了装饰模式的原因、定义、类图、实例以及其特点,揭示了如何通过组合而非继承来避免多子类膨胀的问题,从而实现更佳的代码设计。
摘要由CSDN通过智能技术生成

为什么需要装饰模式?

在某些情况下我们可能会“过度地使用继承来扩展对象的功能”, 由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性; 并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展 功能的组合)会导致更多子类的膨胀。

举例:

//业务操作
class Stream{
public:
    virtual char Read(int number)=0;
    virtual void Seek(int position)=0;
    virtual void Write(char data)=0;
    
    virtual ~Stream(){}
};

//已有主体类
//文件流
class FileStream: public Stream{
public:
    virtual char Read(int number){
        //读文件流
    }
    virtual void Seek(int position){
        //定位文件流
    }
    virtual void Write(char data){
        //写文件流
    }

};
//网络流
class NetworkStream :public Stream{
publ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值