• Composite Design Pattern 设计模式组合


    设计模式组合,它能够更类组合在一类,形成一个树状结构。


    #include <set>
    #include <iostream>
    #include <string>
    using namespace std;
    
    class Coporate
    {
    protected:
    	string name;
    	set<Coporate *> coporate;
    
    public:
    	explicit Coporate(string n = "", string d = "") : name(n), coporate() {}
    
    	virtual string getName()
    	{
    		return name;
    	}
    
    	virtual void add(Coporate *c)
    	{
    		coporate.insert(c);
    	}
    
    	virtual void show()
    	{
    		set<Coporate *>::iterator it = coporate.begin();
    		for ( ; it != coporate.end(); it++)
    		{
    			(*it)->show();
    		}
    	}
    
    	virtual void remove(Coporate *c)
    	{
    		coporate.erase(c);
    	}
    };
    
    class VicePresident : public Coporate
    {
    	string division;
    public:
    	explicit VicePresident(string n = "", string d = "")
    	{
    		name = n;
    		division = d;
    	}
    
    	virtual void show()
    	{
    		cout<<"Vice President's Name is : "<<name
    			<<"; In Division: "<<division<<endl;//关键处
    	}
    };
    
    class Division : public Coporate
    {
    public:
    	explicit Division(string n = "")
    	{
    		name = n;
    	}
    };
    
    class Coporation : public Coporate
    {
    public:
    	Coporation() {}
    };
    
    int main()
    {
    	Coporation corp;
    
    	Division sale("Sales Department");
    	VicePresident vp1("Jelly", sale.getName());
    	VicePresident vp2("Kelly", sale.getName());
    	sale.add(&vp1);
    	sale.add(&vp2);
    
    	Division tech("Technique Department");
    	VicePresident vp3("Qilly", tech.getName());
    	VicePresident vp4("Melly", tech.getName());
    	tech.add(&vp3);
    	tech.add(&vp4);
    
    	VicePresident vp("Billy", "At large");
    	corp.add(&vp);
    
    	corp.add(&sale);
    	corp.add(&tech);
    
    	corp.show();
    
    	return 0;
    }

    执行:




  • 相关阅读:
    Servlet中通过过滤器实现统一的手动编码(解决中文乱码)
    【原】使用Maven完成自动化打包并部署到Linux服务器下(Tomcat7)
    XListview的下拉刷新、上拉加载、用Pull解析XML
    gson解析
    数据库查询
    Android中用友盟实现QQ的第三方登录
    Listview和checkbox多选
    ScrollView嵌套ViewPager 时候 Pager左右滑动不流畅
    字符串的截取
    倒计时
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5040074.html
Copyright © 2020-2023  润新知