Jac*_*ley 3 oop dependency-injection inversion-of-control object-lifetime
而不是使用这样的界面:
public interface IStartable
{
void Start();
void Stop();
}
Run Code Online (Sandbox Code Playgroud)
我通常只是使对象的构造函数运行Start()代码,并实现IDisposable,以便dispose方法运行Stop()代码.
这只是风格问题吗?或者我没有像IStartable这样的东西错过了一些重要的东西?我所看到的只是额外的复杂性,因为你必须保持它的启动/停止状态.
使用启动/停止与使用ctor/dispose的优缺点是什么,特别是在IoC/DI容器的上下文中?
编辑:很好的答案,你已经说服我使用一个可启动对象的界面.我无法确定谁的答案是最好的,所以我会接受24小时后得票最多的人.
使用界面的一般优点是它们是自我描述和自我广告.如果没有接口,则无法询问对象,"您可以启动并停止吗?" 相反,如果使用界面,则可以查询对象以查看哪些对象将响应这些类型的消息.然后,您可以安全地保证这些对象已实现接口封装的功能.