【发布时间】:2016-08-08 16:55:10
【问题描述】:
我想知道是否有某种逻辑编程模式或结构我应该使用,如果有时在运行时应该使用组件而其他时候不应该使用。显而易见的简单解决方案是在任何地方都使用 if-else 语句。我试图避免在我的代码中乱扔 if-else 语句,因为一旦打开组件,它很可能会打开一段时间,我想知道是否值得重新检查同一个组件是否在整个活动中都处于活动状态在两次检查之间答案很可能不会改变的地方。
谢谢
我试图避免的一个简短示例
class MainClass
{
public:
// constructors, destructors, etc
private:
ComponentClass m_TogglableComponent;
}
// somewhere else in the codebase
if (m_TogglableComponent.IsActive())
{
// do stuff
}
// somewhere totally different in the codebase
if (m_TogglableComponent.IsActive())
{
// do some different stuff
}
【问题讨论】:
-
也许Making a Plugin System 可以帮助您入门。
-
那个链接是关于 dll 的,对于这个简单的案例来说,这似乎有点过头了(如果有更多细节,它可能会更合适)
-
出于所有意图和目的,我想您可以将可切换组件视为一个文件,该文件可能会在某个未确定的时间损坏并关闭。您可以使用 Open 将其打开并使用 Close 将其关闭,但也存在文件在运行时中途死亡的情况,因此它会在没有显式调用 Close 的情况下关闭。你如何处理写作?您是否将每个写入调用都包含在检查中以查看文件是否打开?你只是默默地写失败吗?你抛出错误吗?这种意外关闭是否应该是它自己的单独状态类型,应该检查?
-
m_TogglableComponent是否只能通过MainClass的一些公共方法进行切换? -
不,可切换组件也可以通过异常等内部事件进行切换
标签: c++ performance design-patterns components