zoukankan      html  css  js  c++  java
  • 设计模式:composite模式

    目的:使容器和内容具备一致性

    实现:将对象组合成树形结构以表示“部分-整体”的层次结构

    实例:文件夹中可以包含文件夹也可以包含文件

    例子:

    class Item //接口定义
    {
    public:
    	virtual int getSize() = 0;
    	virtual string getName() = 0;
    	virtual void add(Item *item) = 0;
    	virtual void Print();
    };
    
    void Item::Print()
    {
    	cout << "name = " << getName() << "    " << "size = " << getSize() << endl;
    }
    
    class File: public Item //内容定义
    {
    	string name;
    	int size;
    public:
    	File(string name, int size)
    	{
    		this->name = name;
    		this->size = size;
    	}
    	
    	int getSize()
    	{
    		return size;
    	}
    	
    	string getName()
    	{
    		return name;
    	}
    	
    	void add(Item *item)
    	{
    		throw 1;
    	}
    };
    
    class Directory: public Item //容器定义
    {
    	string name;
    	vector<Item*> v;
    public:
    	Directory(string name)
    	{
    		this->name = name;
    	}
    	
    	int getSize()
    	{
    		int ret = 0;
    		
    		for(int i=0; i<v.size(); i++)
    		{
    			ret += v[i]->getSize();
    		}
    		
    		return ret;
    	}
    	
    	string getName()
    	{
    		return name;
    	}
    	
    	void add(Item *item)
    	{
    		v.push_back(item);
    	}
    };
    
    int main() 
    {
    	Directory* d0 = new Directory(string("0"));
    	
    	File* f1 = new File("11", 10);
    	Directory* d1 = new Directory(string("11"));
    	d0->add(f1);
    	d0->add(d1);
    	
    	File* f2 = new File("21", 20);
    	File* f3 = new File("22", 30);
    	d1->add(f2);
    	d1->add(f3);
    	
    	d0->Print();
    	
    	return 0;
    }
    
  • 相关阅读:
    本周总结
    本周总结
    第四周自我总结
    结对编程
    第四周自我总结
    第三周自我总结
    本周工作安排及内容
    知识思考
    交作业。。。
    MSF过程模型
  • 原文地址:https://www.cnblogs.com/chusiyong/p/11433397.html
Copyright © 2011-2022 走看看