我正在看一个例子,我不确定他们为什么要这样做。他们正在使用IEmailSender将mySender设置为...
IEmailSender mySender = new MyEmailSender();为什么不直接写
MyEmailSender mySender = new MyEmailSender();因为MyEmailSender已经有了IEmailSender接口引用
发布于 2013-01-31 06:26:54
在稍后的代码中,他们可以编写
mySender = new MyNewEmailSender();如果需要的话。但这并不一定是对或错的。他们只是想让大家明白一点,不管实现是什么,mySender都是一个IEmailSender。
发布于 2013-01-31 06:27:22
原因有很多,其中之一是如果您使用IEmailSender接口编程,然后决定改为使用MyEvenBetterEmailSender,那么您只需更改一行代码!
另一个是它允许你从特定的实现中“解耦”代码,甚至可以注入代码而不是在程序中硬编码。
在维基百科上阅读更多关于interface-based programming的内容。
https://stackoverflow.com/questions/14615033
复制相似问题