c++ - 类设计: how to add sequencing or alternating logic to API

标签 c++ design-patterns

我的类(class)是这样的:

class FB_I {
  public:
    virtual void foo() = 0;
    virtual void bar() = 0;
};

class TEE_I {
  public:
    virtual void tee() = 0;
};

class C: public FB_I, public TEE_I {
  public:
    virtual void foo();
    virtual void tee();
};

现在我意识到 foo() 和 bar() 其实不是完全独立的,foo() 必须在 bar() 之前被调用。

鉴于以下情况,我想知道处理此问题的最佳解决方案是什么:

  1. 我不想在 C::foo() 和 C::tee() 中添加逻辑来捕获乱序调用。
  2. 我可以将该解决方案用作处理另一种情况的模式,foo() 和 bar() 是替代 API:调用一个时,不应调用另一个。

最佳答案

使用 Template Method ,有时称为 Non-Virtual Interface :

struct FB_I {
    void baz() {
        foo();
        bar();
    }
private:
    virtual void foo() = 0;
    virtual void bar() = 0;    
};

关于c++ - 类设计: how to add sequencing or alternating logic to API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16574991/

相关文章:

c++ - 使用 dumpbin 查看 .dll 或 .lib 文件的源代码

c++ - 如何创建静态常量成员 std::string 数组?

c++ - 存储顶点的所有邻居,快速找到顶点的邻居

c++ - 如何处理子类和父类中的通知消息?

c++ - 可变参数模板参数转发

design-patterns - 为什么工厂模式会这样工作?

Java 搜索数组中的重复模式

design-patterns - 生成器设计模式 : Why do we need a Director?

c# - 没有服务定位器的 IOC

java - 对于泛型/与泛型有哪些有用的 API?