Composite
很難解釋
簡單的說應該像是樹狀結構
我們定義一個樹狀結構節點的介面
每個節點又包含其他節點
這些實做這個介面的物件就能夠用組合起來(如樹狀結構般)
Java SWING的component就是用這個方法設計的
#include
#include
using namespace std;
class component {
private:
listchildren;
public:
component() {
}
virtual void Action()
{}
void Trace()
{
this->Action();
list::iterator i;
for( i = children.begin(); i != children.end(); ++i)
{
(*i)->Trace();
}
}
void Add(component* child) {
children.push_back(child);
}
void Remove(component* child) {
children.remove(child);
}
};
class NodeA : public component {
public:
virtual void Action()
{cout << "NodeA\n";}
};
class NodeB : public component {
public:
virtual void Action()
{cout << "NodeB\n";}
};
class NodeC : public component {
public:
virtual void Action()
{cout << "NodeC\n";}
};
int main()
{
NodeA a;
NodeB b1;
NodeB b2;
NodeC c1;
NodeC c2;
NodeC c3;
a.Add(&b1);
a.Add(&b2);
b1.Add(&c1);
b1.Add(&c2);
b2.Add(&c3);
a.Trace();
return 0;
}
沒有留言:
張貼留言