侯捷老师 P13委托相关设计 (C++)

本文通过侯捷老师的讲解,深入探讨了合成模式的设计原理及其实现方式,该模式使用树形结构来组合对象,以便表示整体与部分的关系,使客户端能够一致地处理单个对象和复合对象。

侯捷老师 P13委托相关设计 https://www.bilibili.com/video/av19038490/?p=13
在这里插入图片描述

#include <vector>
// 侯捷老师,P13内容 https://www.bilibili.com/video/av19038490/?p=13

// 合成模式:将对象组织到树结构中,可以用来描述整体与部分的关系。就是一个处理对象的树结构的模式。
//          把部分与整体的关系用树结构表示出来。
//          使得客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待。

// ex: 文件系统
// 目录里边可以放文件,目录里可以放目录

class Component
{
    int value;
public:
    Component(int val) {value = val;}
    virtual void add(Component*) { }  // virtual,组件定义,子类如果是文件就不用自定义
};
// 文件
class Primitive : public Component
{
public:
    Primitive(int val): Component(val) { }
};
// 复合起来,既有文件夹又有文件
class Composite: public Component
{
    vector<Component*> c; // 既可以放Primitive对象也可放Component,因为Primitive继承自Component
public:
    Composite(int val) : Component(val) { }
    void add(Component* elem) // 既可以添加文件夹也可以添加文件
    {
        c.push_back(elem);
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值