您当前的位置: 首页 > 

phymat.nico

暂无认证

  • 1浏览

    0关注

    1967博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

设计模式-结构型-组成

phymat.nico 发布时间:2017-10-07 15:50:14 ,浏览量:1

#pragma once

#include  
// 组合中的抽象基类 
class Component 
{ 
public: 
	Component(){} 
	virtual ~Component(){} 

	// 纯虚函数,只提供接口,没有默认的实现 
	virtual void Operation() = 0; 

	// 虚函数,提供接口,有默认的实现就是什么都不做 
	virtual void Add(Component* pChild); 
	virtual void Remove(Component* pChild); 
	virtual Component* GetChild(int nIndex); 
}; 

// 派生自Component,是其中的叶子组件的基类 
class Leaf : public Component 
{ 
public: 
	Leaf(){} 
	virtual ~Leaf(){} 
	virtual void Operation(); 
}; 

// 派生自Component,是其中的含有子件的组件的基类 
class Composite : public Component 
{ 
public: 
	Composite(){} 
	virtual ~Composite(); 
	virtual void Operation(); 
	virtual void Add(Component* pChild); 
	virtual void Remove(Component* pChild); 
	virtual Component* GetChild(int nIndex); 
private: 
	// 采用list 容器去保存子组件 
	std::list m_ListOfComponent; 
}; 
#include "StdAfx.h"
#include "composite_impl.h"

#include  

#include  

/*--------------------- 
Component 成员函数的实现 
---------------------*/ 
void Component::Add(Component* pChild) 
{ 
} 

void Component::Remove(Component* pChild) 
{ 
} 

Component* Component::GetChild(int nIndex) 
{ 
	return NULL; 
} 

/*--------------------- 
Leaf 成员函数的实现 
---------------------*/ 
void Leaf::Operation() 
{ 
	std::cout             
关注
打赏
1659628745
查看更多评论
0.0470s