0

我正在通过一个示例,但我不确定他们为什么要这样做。他们正在将 mySender 设置为 IEmailSender....

IEmailSender mySender = new MyEmailSender();

为什么不写

MyEmailSender mySender = new MyEmailSender();

因为 MyEmailSender 已经有 IEmailSender 接口参考

4

2 回答 2

2

稍后在他们可以编写的代码中

mySender = new MyNewEmailSender();

如有必要。但这不一定是对或错。他们只是想表达一个观点,mySender不管IEmailSender实施如何。

于 2013-01-30T22:26:53.830 回答
2

原因有很多,一个是如果你对IEmailSender接口编程,后来又决定MyEvenBetterEmailSender改用你,你只需要更改一行代码!

另一个是它允许您将代码与特定实现“分离”,甚至可以将其注入而不是在程序中硬编码。

在 Wikipedia上阅读有关基于接口的编程的更多信息。

于 2013-01-30T22:27:21.967 回答