首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

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

2013-01-19 
安全模式和透明模式之外的另外一种合成模式.看到网上说合成模式的实现根据所实现接口的区别分为两种形式,

安全模式和透明模式之外的另外一种合成模式.
看到网上说合成模式的实现根据所实现接口的区别分为两种形式,分别称为安全模式和透明模式.
安全模式是集合类节点和叶子节点公有所有积累的借口.叶子节点的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个人觉得这也是一种安全模式吧(只是形式上变了下)?

热点排行