存储库的好处以及两个语句之间的区别
Benefit Of Repository and what is difference between two statements
我正在学习存储库模式。我已经在示例项目中实现了它。但是我不知道存储库的主要好处是什么。
private IStudentRespostiry repository = null;
public StudentController()
{
this.repository = new StudentRepository();
}
public StudentController(IStudentRespostiry repository)
{
this.repository = repository;
}
StudentRepository class 也可以通过创建 class.
的对象来访问该方法
StudentRepository obj = new StudentRepository();
任何人对此都有充分的理由。我知道隐藏数据。
第二个语句允许 dependency injection. This means you can use an IoC 容器注入正确的实现。
因此,例如,在您的单元测试中,您可以注入一个内存数据库(参见 mocking),而您的生产代码将使用一个命中实际数据库的实现。
人们引用存储库的主要原因是可测试性和模块化。为了可测试性,您可以将具体对象替换为使用存储库的模拟对象。对于模块化,您可以创建不同的存储库,例如使用不同的数据故事。
但我对模块化持高度怀疑态度,因为存储库通常是高度泄漏的抽象,并且更改支持的数据存储极为罕见。这意味着应该像创建不同实例一样简单的事情变成了完全重写。破坏存储库的目的。
other ways 可以实现数据存储的可测试性,而不必担心泄漏抽象。
至于你的代码示例。在第一种情况下,第一个构造函数是 "default" 一个,第二个可能用于 IoC 或使用模拟进行测试。 IMO 应该没有 "default",因为它消除了实际拥有 IoC 的目的。
我正在学习存储库模式。我已经在示例项目中实现了它。但是我不知道存储库的主要好处是什么。
private IStudentRespostiry repository = null;
public StudentController()
{
this.repository = new StudentRepository();
}
public StudentController(IStudentRespostiry repository)
{
this.repository = repository;
}
StudentRepository class 也可以通过创建 class.
的对象来访问该方法StudentRepository obj = new StudentRepository();
任何人对此都有充分的理由。我知道隐藏数据。
第二个语句允许 dependency injection. This means you can use an IoC 容器注入正确的实现。
因此,例如,在您的单元测试中,您可以注入一个内存数据库(参见 mocking),而您的生产代码将使用一个命中实际数据库的实现。
人们引用存储库的主要原因是可测试性和模块化。为了可测试性,您可以将具体对象替换为使用存储库的模拟对象。对于模块化,您可以创建不同的存储库,例如使用不同的数据故事。
但我对模块化持高度怀疑态度,因为存储库通常是高度泄漏的抽象,并且更改支持的数据存储极为罕见。这意味着应该像创建不同实例一样简单的事情变成了完全重写。破坏存储库的目的。
other ways 可以实现数据存储的可测试性,而不必担心泄漏抽象。
至于你的代码示例。在第一种情况下,第一个构造函数是 "default" 一个,第二个可能用于 IoC 或使用模拟进行测试。 IMO 应该没有 "default",因为它消除了实际拥有 IoC 的目的。