2

我正在使用 ASP.NET MVC5 项目。我是商业编程的新手,我对接口有点困惑,我以前没有使用过它们。我有一个几乎完成的项目。

这是一个例子:

public interface IUserService()
{
   bool ValidateUser(string name, string password);
   //.. others
}

我也上课实施这项服务

public class UserService : IUserService
{
   public bool ValidateUser(string name, string password)
   {
     //code
   }
   //.. others
}

如果我的控制器作为示例,我正在使用 UserService:

public class HomeController : Controller
{
   IUserService _userService;

   public HomeController(IUserService userService)
   {
     _userService = userService;
   }

   [HttpGet]
   JsonResult Anymethod(string name, string pw)
   {
     return Json(_userService.ValidateUser(name,pw), JsonRequestBeh.AllowGet);
  }
} 

为什么不使用 IUserService 而不是使用 UserService 作为静态类而不实现 IUserService?

public static UserService
{
   ValidateUser(string user, string pw)
   {
     //code
   }
}

如果在这种情况下类似,使用接口有什么好处?

4

2 回答 2

1

想法是不要让您的控制器依赖于您的服务的实际实现。如果您通过接口注入服务,则您正在控制控制器之外的实现。这样做的基本原因是使您的控制器的测试更容易。您可以在测试控制器逻辑时注入模拟服务。检查依赖注入模式。

于 2016-02-25T22:17:50.993 回答
-1

因为多态

这篇文章可能对你有用。

于 2016-02-25T22:11:44.133 回答