个人理解Java程序设计原则—面向接口编程

前言:

  如果说类是对一类事物的抽象,那么接口就是对一类行为的抽象,因为它只规范了一组方法的调用特征而没有给出方法的具体实现,接口是实现面向抽象编程,从而达到代码间弱耦合的重要手段之一。

  接口的重要作用之一:解耦

  对于程序设计来说,接口的重要意义在于它的解耦作用。在程序设计中,适当使用接口可以对不同功能的程序设计模块进行有效的隔离。也就是说,服务方代码的任何变动不会蔓延到客户方,从而使程序的可维护性变的更强,这个也是强制作用带来的结果,如下是一个接口实现代码接口(隔离)作用的示例。

  • 程序的代码:

 

 1 /**
 2  * 接口
 3  */
 4 public interface print {
 5     public void printChar();
 6     public void printNum();
 7 }
 8 
 9 /**
10  * 服务类
11  */
12 class Serv implements print{
13     public void printChar(){
14         System.out.println("this is printChar");
15     }
16     public void printNum(){
17         System.out.println("this is printNum");
18     }
19 }
20 
21 /**
22  * 客户类
23  */
24 class Client {
25     public void printClient(print s){    //以接口作为参数类型
26         s.printChar();
27     }
28 }
29 /**
30  * 主类
31  */
32 public class Main{
33     public static void main(String[] args){
34         new Client().printClient(new Serv());
35     }
36 }

 

在本例子中,接口也遵循类的类型赋值兼容规则,即实现类可以被看做接口类型。那就是说,Serv类型对象可以被当做print对象来被printClient()方法所接口,这就带来了一个重要的优点,对于客户类中的printClient()方法来说,只要接口print不变,实现类Serv的代码无论怎么变都不会影响客户代码,简单点说,服务方的任何类型都不会蔓延到客户代码,即使服务方对服务进行升级时连服务类都改了,那也只需要在主类中作一个小的修改就好了。

 面向接口编程的好处:

       1、可以在使用类的时候更加清晰明了,更加的关注的是自己需要的功能,如下代码:

1 //以下三个实现类的定义中,使用面向接口定义的明显要比使用LinkedList定义要清晰
2 //很清楚的定义了需要的类型集合,是队列还是链表,有助于代码的阅读
3 LinkedList lis=new LinkedList();
4 Queue que=new LinkedList();
5 List ls=new LinkedList();

在java源代码中,LinkedList类实现了Queue接口和List接口,而队列和链表是两种概念的数据结构集合。

        2、对应着不同的接口,其实现类的实例对象有着不同的方法,使程序看起来更加合理。比如实现了Queue接口时,就可以使用其中的poll()方法和offer()方法,这个方法在List接口中就没有

 

以上就是个人的理解

 

posted @ 2012-09-13 16:07  Lowp  阅读(1482)  评论(0编辑  收藏  举报