【问题标题】:Should I minimize the number of interfaces in a controller?我应该尽量减少控制器中的接口数量吗?
【发布时间】:2011-04-15 14:31:55
【问题描述】:

在下面的片段中,我的控制器采用了三个接口。这些是通过 Ninject 连接起来的。好的,一切都很好,绝对是朝着正确方向迈出的一步。我的问题是这个?

1.) 以这种方式将 3 个接口封装到一个接口和一个实现中会更好,从而减少传递给控制器​​ ctor 的参数数量吗? 2.) 别管它,它工作正常吗?

我一直在寻找将地狱从一切事物中抽象出来的方法。 想法?

public class RegistrationController : Controller
{
    private readonly ICategoriesService _categoriesService;
    private readonly IAuthenticationService _authenticationService;
    private readonly IRegistrationService _registrationService;

    // Ctor
    public RegistrationController(ICategoriesService categoriesService, 
        IAuthenticationService authenticationService,
        IRegistrationService registrationService)
    {
        _categoriesService = categoriesService;
        _authenticationService = authenticationService;
        _registrationService = registrationService;
    }

}

【问题讨论】:

  • 我建议除了标题之外的所有东西都想多了 :-) 一个好的标题是成功的一半。
  • 我想知道为什么我的头衔变了,哈哈……谢谢伙计。

标签: asp.net-mvc-3 domain-driven-design ninject-2


【解决方案1】:

拥有一个巨大的接口(或一个巨大的类,这是实现巨大接口所需要的),因为它“方便”被广泛认为是antipattern。根据您当前接口的名称,它们似乎围绕它们提供的操作类型进行了良好且合乎逻辑的结构,我建议您保持这种方式(这也提供了更高的灵活性,因为可能在其他地方您只需要一些接口)。

顺便说一句:如果你有适当的单元测试和集成测试,“别管它,它正在工作”是一个永远不需要的短语。 ;-)

【讨论】:

  • 因为我在这里是 anoob,所以我要等 8 分钟才能接受作为答案。不过很酷的交易,我会保持现状并继续。非常感谢,我很欣赏快速响应。
  • @Code Jammr:没问题;无论如何,大多数答案的接受速度几乎没有那么快(等待几个答案积累然后选择最好的答案是完全合法的 - 特别是因为问题是关于代码设计的,所以很可能有人会与我的观点相反)。 :-)
猜你喜欢
  • 2018-04-15
  • 2021-04-04
  • 2013-10-14
  • 2016-12-11
  • 1970-01-01
  • 1970-01-01
  • 2016-12-23
  • 1970-01-01
  • 2011-09-04
相关资源
最近更新 更多