这段代码之间的区别是什么?
interface ICommandHanddler<T> where T : ICommand
{
void Handle(T command);
}
和这段代码:
interface ICommandHanddler<ICommand>
{
void Handle(ICommand command);
}
对我来说,它对我的软件有同样的影响,但我想知道这是否真的不会影响任何事情或者它只是一个好的做法
答案 0 :(得分:0)
前者说:&#34; CLASS类型的接口,其中CLASS是ICommand的扩展&#34; 后者说:&#34; ICommand&#34;
类型的接口前者允许您使用多种类型的对象调用ICommandHanddler
界面,只要它们继承ICommand
或ICommand
。
关于你的程序的影响:如果你有多个类从一个普通的父级延伸并覆盖相同的功能,那么它将使你的生活变得更容易,更有条理去做前一种方法。如果您仅拥有ICommand
课程,那么您可以很好地完成后者。这完全取决于您计划构建和扩展课程的方式。