代码之家  ›  专栏  ›  技术社区  ›  Igor

如何将现有类重构为多态类?

  •  3
  • Igor  · 技术社区  · 14 年前

    现在,我想要一个多态性来代替这个类,实际的对象将由某种工厂创建。

    1. 将类更改为一个包装器,它将调用我将创建的新多态类的函数。

    我应该选择哪种策略?

    3 回复  |  直到 14 年前
        1
  •  4
  •   S.Lott    14 年前

    更改我使用类调用工厂的所有位置,并直接使用指针而不是对象。

    new MyClass( .

    new ,你会发现这并不是一份很糟糕的工作。

        2
  •  2
  •   stinky472    14 年前

    我会使用#1,但不是常规指针,而是类似boost::shared#ptr或boost::scoped#ptr(取决于您的需要)。

    第二个选项可能允许您对基本包装器接口有一些自由,但我建议您不要这样做:尽可能支持普遍接受的方法。如果基类包装器提供了boost::shared \u ptr没有提供的额外功能,例如,它将是一个在系统中引入新概念的外来实体,并且可能对它几乎没有好处。

        3
  •  1
  •   sbi    14 年前

    你使用包装器的想法甚至有一个名字。这是最重要的 letter/envelope idiom ,正如Coplien所描述的(在他们开始称这些习语为“模式”之前)。
    finds you more explanations 为了它。


    有什么问题吗?