• 个人理解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接口中就没有

    以上就是个人的理解

  • 相关阅读:
    【Python开发】python使用urllib2抓取防爬取链接
    【Python开发】python使用urllib2抓取防爬取链接
    【Python开发】Python之re模块 —— 正则表达式操作
    【Python开发】Python之re模块 —— 正则表达式操作
    【Python开发】Url中文字符时记得转码edcode("utf-8")
    【Python开发】Url中文字符时记得转码edcode("utf-8")
    【Python开发】urllib2异常处理
    【Python开发】urllib2异常处理
    【Python开发】urllib2.urlopen超时问题
    【Python开发】urllib2.urlopen超时问题
  • 原文地址:https://www.cnblogs.com/Lowp/p/2683130.html
Copyright © 2020-2023  润新知