【发布时间】:2016-03-09 14:59:19
【问题描述】:
假设我有一个界面:
public interface MyInterface
{
void CallMeFirst();
void CallMeDuringApplicationLifecycle();
void CallMeOnApplicationExit();
}
强制执行调用代码使用此接口上的方法的顺序的最佳方式是什么?
如果按错误的顺序调用方法应该是一个例外。
如果任何方法根本没有调用,这也应该是一个例外。
【问题讨论】:
-
你有工作代码吗?如果是这样,请将您的问题发布到codereview.stackexchange.com
-
感谢@roryap 的链接。我不知道代码审查网站 - 看起来很有用。但是,这个问题更像是一个我经常遇到的通用问题。有没有一种模式可以用来强制执行接口的使用方式。
-
这看起来是一个有趣的问题,我会在Software Engineering 上提问。问题是您有时间耦合,并且接口的目的不是强制执行除了给定成员集的存在 之外的任何内容。接口无法执行您所要求的任何事情,更不用说抛出异常了。
-
接口公开一个 ... 接口。不是一个过程。您正在谈论流程管理。这可以通过工作流、状态机或许多其他机制来处理
-
谢谢@Mat'sMug。你是对的,这里显然存在时间耦合。我可以看到如何使用像 this 这样的方法来消除时间耦合以进行简单的初始化。但是,如果您需要在此初始化之后 调用方法,我看不出它会有什么帮助。我当前的问题涉及我必须将缓冲区刷新到服务器,并且我只想在应用程序退出时执行一次。
标签: c# design-patterns