zoukankan      html  css  js  c++  java
  • 【c++设计模式】组合模式

    结构型模式

    8)组合模式

    当需要以树形结构来表示部分 - 整体的层次结构时使用。
    组合模式中只有一种角色,就是要表示的对象。

    //对象基类
    class Department{
    public:
        Department(string strName): m_strName(strName){}
        void addSubDepartment(Department* p){
            m_vecDep.push_back(p);
        }
        virtual ~Department(){
            list<Department*>::iterator it;
            for(it = m_vecDep.begin();it!=m_vecDep.end();it++){
                if(*it!=NULL){
                    delete (*it);
                    (*it) = NULL;
                }
            }
        }
    private:
        string m_strName;
        list<Department* > m_vecDep; //这里为核心,就是包含了指向同样类型指针的容器
    };
    
    
    class Level1Depart : public Department{
    public:
        Level1Depart(string name) : Department(name){}
    };
    
    class Level2Depart : public Department{
    public:
        Level2Depart(string name):Department(name){}
    };
    
    int main()
    {
        //一级部门
        Department* a0 = new Department("A1");
        
        //二级部门
        Department* b1 = new Level1Depart("B1");
        Department* b2 = new Level1Depart("B2");
        
        //三级部门
        Department* c1 = new Level2Depart("C1");
        Department* c2 = new Level2Depart("C2");
        Department* c3 = new Level2Depart("C3");
        Department* c4 = new Level2Depart("C4");
        
        a0->addSubDepartment(b1);
        a0->addSubDepartment(b2);
        
        b1->addSubDepartment(c1);
        b1->addSubDepartment(c2);
        
        b2->addSubDepartment(c3);
        b2->addSubDepartment(c4);
        
    }
    
    
  • 相关阅读:
    《大道至简》第一章 编程的精义
    java课堂练习7
    Java课后练习6
    Java课后练习5
    Java课后练习4
    Java课后练习3
    课堂练习
    求和程序实验报告
    大道至简第二章读后感
    课堂作业例子
  • 原文地址:https://www.cnblogs.com/corineru/p/12013529.html
Copyright © 2011-2022 走看看