Composite

合成模式:将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性. 合成模式就是一个处理对象的树结构的模式。合成模式把部分与整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待。
这里写图片描述

//Component
class Component{
public:
    Component(){}
    virtual ~Component(){}
virtual void Operation() =0 ;
virtual void Add(const Component&){}
virtual void Remove(const Component&){}
virtual Component *GetChild(int){}

};
//Composite
class Composite:public Component{
public:
    Composite(){}
    ~Composite(){}
    void Operation(){
        vector<Component *>:iterator comIter = comVec.begin();
        for(;comIter != comVec.end();comIter++){
            (*comIter) ->Operation();
        }
    }
    void Add(Component *com){
        comVec.push_back(coom);
}
    void Remove(Component *com){
        comVec.erase(&com);
    }
    Component *GetChild(int index){
        return comVec[index];
    }
private:
    Vector<Component *> comVec;

};
class Leaf: public Component{}
public:
    Leaf(){}
    ~Leaf(){}
    void Operation(){  ... }


;
int main(void){
    Leaf *l = new Leaf();
    l->Operation();
    Composite *com = new Composite();
    com -> Add(1);
    com ->Operation();
    Component *ll = com->GetChild(0);
    ll -> Operation();
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值