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;
}

执行:










本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5040074.html,如需转载请自行联系原作者


相关文章
|
3月前
|
设计模式 算法 Java
行为型设计模式-策略模式(Strategy Pattern)
行为型设计模式-策略模式(Strategy Pattern)
|
3月前
|
设计模式 算法
设计模式 - 行为型模式_ 访问者模式Visitor Pattern
设计模式 - 行为型模式_ 访问者模式Visitor Pattern
39 1
设计模式 - 行为型模式_ 访问者模式Visitor Pattern
|
3月前
|
设计模式 Java 应用服务中间件
设计模式 -结构型模式_门面模式(外观模式) Facade Pattern 在开源软件中的应用
设计模式 -结构型模式_门面模式(外观模式) Facade Pattern 在开源软件中的应用
37 1
|
3月前
|
设计模式 缓存 安全
设计模式 - 创建型模式_ 单例模式 Singleton Pattern
设计模式 - 创建型模式_ 单例模式 Singleton Pattern
39 0
|
16天前
|
设计模式 存储 Java
Java设计模式:解释一下单例模式(Singleton Pattern)。
`Singleton Pattern`是Java中的创建型设计模式,确保类只有一个实例并提供全局访问点。它通过私有化构造函数,用静态方法返回唯一的实例。类内静态变量存储此实例,对外仅通过静态方法访问。
16 1
|
4月前
|
设计模式 Java
Java设计模式:什么是观察者模式(Observer Pattern)?
Java设计模式:什么是观察者模式(Observer Pattern)?
31 0
|
4月前
|
设计模式 自然语言处理 编译器
二十三种设计模式全面解析-解释器模式(Interpreter Pattern):用代码诠释语言的魅力
二十三种设计模式全面解析-解释器模式(Interpreter Pattern):用代码诠释语言的魅力
|
21天前
|
设计模式 SQL 算法
设计模式了解哪些,模版模式
设计模式了解哪些,模版模式
21 0
|
1月前
|
设计模式 Java uml
C++设计模式之 依赖注入模式探索
C++设计模式之 依赖注入模式探索
37 0
|
2月前
|
设计模式 前端开发 JavaScript
观察者模式 vs 发布-订阅模式:两种设计模式的对决!
欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚开始学习前端的读者们打造的。无论你是初学者还是有一些基础的开发者,我们都会在这里为你提供一个系统而又亲切的学习平台。我们以问答形式更新,为大家呈现精选的前端知识点和最佳实践。通过深入浅出的解释概念,并提供实际案例和练习,让你逐步建立起一个扎实的基础。无论是HTML、CSS、JavaScript还是最新的前端框架和工具,我们都将为你提供丰富的内容和实用技巧,帮助你更好地理解并运用前端开发中的各种技术。