面向接口编程:
1, 在定义一个引用变量时, 心里想的应该是:我在这里需要一个什么样的功能,我是因为需要什么功能才创建变量的! 接口定义了功能的集合! 所以我应该是用接口来定义这个引用变量嘛!
2, 定义好了引用变量以后, 要让它引用一个对象, 这个对象就应该是实现了那个接口的类的实例了! 随便一个类, 只要它继承实现了那个接口, 那么它的实例都可以在这里被引用.
3, 方法的返回类型也是要定义为接口类型, 因为, 你要记住: 我们这个方法是需要返回一个有特定功能的对象! 同理, 方法的参数的类型也是如此!
我的理解: 所谓面向接口编程, 就是说在定义引用变量的时候, 用接口来定义.
多说一句: 也许你觉得用抽象类来定义也可以, 那么请你仔细的再领悟一下第一条吧!
我们完全可以给抽象类定义一个接口类型的嘛, 呵呵.
一直以来我的一个思想误区就是:在需要定义一个变量时,想的是它要引用哪一个对象, 其实不该这么想, 应该扭转一下这种想法, 以后,应该想的是,我需要什么功能呢,我要定义一个什么样的接口,从而给这里提供一些什么样的功能!
-------------------------------------------------------------------------------------------------------------------------------------------------------
接口 以及 工厂模式以及IOC模式的运用, 可以很好的减少模块之间的耦合,便于以后系统引用实例的更改!
我觉得这是接口的最大功用!
接口和抽象类都是对类的抽象,对类的划分,是最高层的抽象!
--------------------------------------------------------------------------------------------------------------------------------
1,假如一个类实现了多个接口,那么用接口类型来定义它的引用变量的话,一眼就可以明白,这里是需要这个类的哪些个方法!
2,用接口类型定义引用变量,以后需要修改其引用的实例时,改动的地方要少一些!