这是一个关于依赖注入的问题。在构造服务对象时,我们在构造阶段通过构造器传入协作者。服务对象将实现一个接口,该接口将在运行阶段被调用。
有时很难知道一个特定的对象是应该通过构造函数传递,还是应该是服务类实现的接口的一部分?
关于选择一个而不是另一个,有什么规则吗?当您知道接口在您要编码的场景中只会被调用一次时,这个问题是最困难的。
发布于 2010-10-28 15:22:52
我喜欢这样想:
的配置值
的运行时值
很多技巧都是在正确地构建问题。例如,我们可能会对自己说:“我需要在用户表中创建一个新行。”从这个角度来看,这两个签名看起来都很好:
void Insert(User user);
void Insert(User user, IDbConnection dbConnection);然而,我们可以分解我们的任务定义:
意图:创建新用户
实现详细信息:用户是表中的一行
相反,让我们将任务框架为“我需要创建一个用户”。这为我们提供了一种评估上面两个签名的方法,支持与我们的意图匹配的签名:
void Insert(User user);对操作意图及其数据适用范围的分析通常会给出可靠的结果。
发布于 2010-10-28 12:08:31
我经常使用的一条经验法则是,类是否可以在没有传入值的情况下工作,并与构造函数的复杂性相平衡。如果类不能在没有参数的情况下正常运行,通常最好将它放在构造函数中。另一方面,如果类被设计为做一些需要额外工作的工作,比如接受套接字上的连接,这类工作通常应该被延迟到以后的函数。
https://stackoverflow.com/questions/4039645
复制相似问题