为了与数据输入的Repository模式保持一致,我对使用继承类有一个疑问。例如,假设我有班级......
class Employee
IEmployeeRepository
{
Add(Employee employee);
}
这项工作正常,到目前为止没有任何问题......但现在让我说我继续......
class Manager : Employee
好的,现在让我们假设我从不需要进入与员工不同的经理?这里最好的方法是什么?会是一个场景,如..
IEmployeeRepository
{
Add<T>(T employee) where T : Employee
}
是最好的方法,还是我需要为每种类型抽象不同的存储库?
答案 0 :(得分:1)
如果他们都是员工,我可能会创建一个界面并将其约束。例如:
IEmployeeRepository
{
Add<T>(T employee) where T : IEmployee
}
答案 1 :(得分:0)
如果处理的事情不同,那么您应该为新类型创建另一个存储库。
如果两者从来没有不同的逻辑(他们真的不应该考虑管理员在你的情况下仍然是一个员工),那么你可以重新使用你已经拥有的。您甚至不需要更改代码(只要Manager继承自Employee类):
public interface IEmployeeRepository
{
Add(Employee employee);
}
应该工作得很好。
答案 2 :(得分:0)
让我们假设我永远不需要 输入不同于的经理 雇员
所以你没有抽象。您只有Employee
并且需要一个存储库。
我需要抽象一个不同的 每种类型的存储库?
如果你有一些子类的抽象,那就是。重点是通常不需要为子类设置抽象类的存储库。