通过其方法的子集实现接口

时间:2017-12-08 08:34:55

标签: c++ design-patterns

我有一个带有两种方法的C ++接口。实现此接口的任何类都需要实现两个方法中的至少一个,但可以定义它们。然而,没有必要定义两者。在这种情况下使用的最佳模式是什么?

2 个答案:

答案 0 :(得分:0)

如下所示:

class MyInterface
{
public:
  virtual ~MyInterface() {}

  virtual void foo() = 0;
  virtual void bar() = 0;
};


class MyAbstractClass :  public MyInterface
{
public:
  virtual ~MyAbstractClass();

  // Provide implementation for foo or bar
  virtual void foo() override { }
  virtual void bar() override { }
};

class MyNewClass : public MyAbstractClass
{
   // Implement either of foo or bar or can be both
};

答案 1 :(得分:0)

恕我直言,这个问题已经错了,也是它所基于的课程。

案例A: 类具有给定方法的定义。基础实现应该提供可预期的行为。在这种情况下,您可以自由覆盖它。

案例B: 该方法是抽象的,因此您必须以可预期的方式覆盖它,否则编译器不会编译。

无法申报"请覆盖其中一个或两个"在C ++中。给出的一类,预计会是(非常)糟糕的设计。

所以问题不存在。如果它存在,则无法用更多细节回答它,因为它取决于上下文。