我不确定这是什么电话或如何用谷歌搜索解释,但这里有
假设我有一个接口调用 IView 和一个类继承 IView 调用 View 类。在某些项目中,我看到以下代码:
IView view = new View();
为什么要这样做?为什么不只是做
var view = new View();
声明一个接口然后创建一个 View 对象有什么目的吗?为什么不做第二步?
如果使用var
关键字,将自动检测变量的类型,并且可能是 typeView
而不是IView
. 你的代码的读者更清楚你实际上是想有一个IView
参考。
接口的想法是,哪个类实现它们并不重要,因此您的代码是建立在这样的知识之上的:this..thing..实现了所有 IView 的属性和方法,而不管它是哪个类。
这样的设置将允许您稍后轻松插入不同的类。您可以将此行替换为对 IView工厂的调用,您根本不知道它返回哪个类实例。
您可能需要查看不同于任何 View 的东西,例如,如果 View 是 SpecialView 的一个类,那么var view
即使它们都具有 IView 接口,您以后也不允许您为其分配 GenericView 的东西。