代码举例:People p = new Student();
好处:可以少改代码(专业术语:解耦合),当p调用的方法需要改成另一个实现类时,用接口就不需要改代码了
如:你的方法中用到p.getMessage()时(你需要从得到student信息改变到得到teacher信息);你将只需
new Student改为new Teacher,后面的代码不需要任何改变。
网上一个例子讲的挺好:
假设你LoginImpl类里写了具体的登录验证的逻辑并且有与数据库交互的相关方法,此时你用的是mysql数据库。
如果有一天你想对登录的逻辑进行修改或者改用其他数据库比如oracle、sql server。那么此时如果你使用的是
第一种方法初始化login对象那么你只需要新键一个类LoginImpl4oracle并且实现Login接口(接口内已经定义好
了全部需要的方法,只要挨个实现就可以了,不需要重新梳理业务逻辑,重新定义各种方法)。程序中将
Login login=new LoginImpl();这句改成Login login=new LoginImpl4oracle();其他代码完全不用改,甚至
可以把对象初始化写成配置文件,那么程序都不需要重新编译,只改配置文件就可以了。