zoukankan      html  css  js  c++  java
  • 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;
    }

    执行:




  • 相关阅读:
    服务器 空间
    android 手动打包
    sql server 2000 完全卸载 2
    apk 优化
    asp.net 画 数据图表
    java 运行 bat win linux
    vb 生成 批处理
    国内平台
    委托
    observer 观察者模式
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5040074.html
Copyright © 2011-2022 走看看