我有一个继承自接口(IDataSource)的数据库类和一个代表用户的类。
真正让我感到困惑的是,哪个类负责从数据库中获取用户数据——用户类是否应该定义一个需要数据库类/ IDataSource 的实例来执行查询的方法,或者数据库类是否应该实现一个方法接收用户数据并返回用户对象?
这只是一个一般性问题,我期待着阅读一个有用的答案。
编辑:
也许这样解释以下是如何工作的:
class ContactValidator : IValidator
{
public Boolean Validate(Contact contact) { ... /* check Name is unique in DB */ }
}
IValidator 会是什么样子?
据我所知,它看起来像这样:
public interface IValidator{
bool Validate(???)
}
我不能将“联系人”设置为接口的参数,否则每个实现接口的类都需要一个联系人作为参数。
是否可以在编译器不抱怨参数类型的情况下将“对象”定义为参数?
@ Active Records vs. Repository - 优点和缺点?
我找到的唯一解决方案是:
public interface IValidator<T> {
bool Validate(T obj)
}
还是有另一种方法可以让它为多个班级工作?