读书人

安全模式跟透明模式之外的另外一种合成

发布时间: 2013-01-19 11:41:36 作者: rapoo

安全模式和透明模式之外的另外一种合成模式.
看到网上说合成模式的实现根据所实现接口的区别分为两种形式,分别称为安全模式和透明模式.
安全模式是集合类节点和叶子节点公有所有积累的借口.叶子节点的Add()和Remove函数产生异常或者做特殊处理.
我想出一种办法.把叶子节点的Add()和Remove函数私有化.实现为空.
如:
class Component
{
protected:
// Fields
string m_name;

public:
// Constructors
Component(string name){ m_name = name; }

public:
// Methods
virtual void Add(Component* c) = 0;
virtual void Remove(Component* c) = 0;
virtual void Display(int depth) = 0;
};

// "Leaf"
class Leaf: public Component
{
public:
// Constructors
Leaf(string name) : Component(name) { }

private:
// Methods
void Add(Component* c){ }

void Remove(Component* c){}
public:
// Methods
void Display(int depth)
{
for(int i=0; i<depth;++i)
cout<<"-";
cout<<m_name<<endl;
}
};
这样客户程序就不能调用这两个私有函数.如果调用,编译会出错.

[解决办法]
ms个人觉得这也是一种安全模式吧(只是形式上变了下)?

读书人网 >软件开发

热点推荐