面向接口编程优缺点
下面是我对面向接口编程的理解
优点:
1.程序结构清晰,使用方便
2.接口经过合理设计后,有利于程序设计的规范化,并可以并行开发,提高工作效率
3.实现了程序的可插拔性,对于不同的需求切换不同的实现,降低了耦合度,随着系统复杂性的提高这个优势会越来越明显
4.允许多重实现,弥补了继承的缺陷
缺点:
1.增加了设计的复杂度,不佳的接口的设计会对所有使用接口的层都有影响,并且并不是所有的程序的都需要使用接口,接口只有在系统的复杂性达到一定程度才能体现出它的优势,否则只是纯粹的增加工作量,当然选择接口是不会错的,这需要自己的衡量
2.可能会降低代码的可复用性
3.可能会降低程序的执行效率
使用接口的经典案例:
1.JDBC接口,如果使用的标准SQL,mysql和sqlserver的切换只是切换不同的JAR,一个新的DB厂商想支持JAVA,只要实现JAVA的JDBC接口即可。
2.JMS接口,你选择了Apache ActiveMQ作为你的消息中间件,某天你发现WebSphere更佳适合,切换成WebSphere实现后你会发现你没有太多需要改动的地方。
反之以上设计如果没有使用接口,我们会发现这种情况:
mysql.jar提供的连接方法叫:connectMysql(String url ,String userName) sqlServer.jar提供的连接方法叫:connectSqlServer(String userName,String url)
当我们的程序中至少有1万处使用连接方法,并且所有的执行查询,设置参数等等方法都是不同的,程序的改造无疑是非常恐怖的。
接口和继承的选择:
有人问Jams Gosling(Java之父):“如果你重新构造Java,你想改变什么?”。“我想抛弃 classes”他回答。在笑声平息后,它解释说,真正的问题不是由于class本身,而是实现继承(extends 关系)。接口继承(implements关系)是更好的。你应该尽可能的避免实现继承。