我目前想知道何时使用哪种类型的通用接口定义。我们以此为例:
// (I)
public interface IStorage<T>
where T: class, new()
{
void SaveTo(string fileName, T what);
T LoadFrom(string fileName);
}
// (II)
public interface IStorage
{
void SaveTo<T>(string fileName, T what)
where T: class;
T LoadFrom(string fileName)
where T: class, new();
}
从我的观点来看,我会说:
那么,您怎么看?有最好的做法吗?关于这个的其他想法?
答案 0 :(得分:0)
考虑关联的逻辑含义的差异。
实现通用接口Interface<Type>
的类将与该类型在逻辑上相关联。并且该类引用Type的所有方法也将与之相关联。
这可能很适合代表Builder(模式)的接口。
具有泛型类型方法(Type doSomething<Type>
)的类在调用时将具有与指定类型逻辑关联的方法。不同的方法可能需要提供不同的泛型类型。
这可能很适合代表Factory(模式)的接口。