我的类(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() 之前被调用。
鉴于以下情况,我想知道处理此问题的最佳解决方案是什么:
- 我不想在 C::foo() 和 C::tee() 中添加逻辑来捕获乱序调用。
- 我可以将该解决方案用作处理另一种情况的模式,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/