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

安全模式和透明模式之外的另外一种合成模式.该如何处理

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

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

热点排行