why

考虑virtual函数以外的其他选择

          设计类的成员函数的架构,在继承体系中,除了直接定义virtual函数外,还应当考虑以下几种方案:

         1。由Non-Virtual Interface手法实现Template Method模式

           NVI手法:令客户通过publicnon-virtual成员函数间接调用private vritual函数。这就是Template Method设计模式的一个独特表现形式。这个non-virtual函数称为virtual函数的外覆器(wrapper)。

          2。有Function Pointers实现Strategy模式

          类中存储的是函数指针

          3。有tr1::function完成Strategy模式

         类中存储的是函数对象,相比前者,好处是允许客户在计算是使用任何与函数对象相兼容的可调用物。

           4。古典的Strategy模式

         类存储的是策略类对象的指针。

         

            各自优缺点:

            直接的virtual和NVI手法,面向对象组织结构很明确,但是扩展性不强。

            Strategy模式:扩展性强,灵活。但是将机能从成员函数移到class外部函数的缺点是,非成员函数无法访问class的non-public成员。

posted on 2010-10-25 14:29 why 阅读(405) 评论(0)  编辑 收藏 引用 所属分类: Effective C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理