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 を実装せずに IUserService の代わりに UserService を静的クラスとして使用しないのはなぜですか?

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

その場合に似ている場合、インターフェースを使用する利点は何ですか?

4

2 に答える 2

1

アイデアは、サービスの実際の実装に対してコントローラーに依存しないことです。インターフェイスを介してサービスを注入している場合、コントローラーの外部で実装を制御しています。これの基本的な理由は、コントローラーのテストを容易にするためです。コントローラー ロジックをテストするときに、モック サービスを挿入できます。依存性注入パターンを確認します。

于 2016-02-25T22:17:50.993 に答える