zoukankan      html  css  js  c++  java
  • 接口的理解

      这个是自己的理解,因为我也是刚开始编程的菜鸟,所以会有很多错误,欢迎大家指导!

      首先按我的理解来说一个例子(这个例子被很多人提过,下面的这个是按我自己的理解来说的):

      小王是一个苦逼(酷毙)程序员,他要开发一个程序,其中要实现一个功能:连接到一个数据库,要对数据库进行一些操作。实现功能首先需要有一个数据库,在开发的时候他使用的A厂家的数据库。假设A厂家提供的类库中实现小王需要的功能的类是DataA,小王创建一个DataA实例,然后调用DataA类中的方法。假设DataA类连接数据库的方法为ConnectA,修改数据库中数据的方法为ChangeA,关闭数据库连接为CloseA。则小王实现功能要写的代码大致为:

    DataA xiaowang = new DataA();   //创建DataB类的实例
    xiaowang.ConnectA();         //连接数据库     
    xiaowang.ChangeA();         //修改数据库数据
    xiaowang.CloseA();            //修改完毕,关闭数据库连接

    程序大概是这个样子。

      不幸的是A厂家倒闭了。而且DataA设计有严重的缺陷,不可以继续使用了。发现这个的时候小王这个项目已经完成了。现在老板对他说这个项目不可以使用A厂家的类库了,你还是使用B厂家的吧。没办法小王又要学习B类库的内容,B厂家提供类库中实现小王需要的功能的类是DataB,连接数据库的方法是ConnectB,修改数据库中数据的方法为ChangeB,关闭数据库连接的方法为CloseB。小王开始修改上面的代码。修改完代码的样子大致如下:

    DataB xiaowang = new DataB();   //创建DataB类的实例
    xiaowang.ConnectB();         //连接数据库     
    xiaowang.ChangeB();         //修改数据库数据
    xiaowang.CloseB();            //修改完毕,关闭数据库连接

    看代码,小王要把所有的代码全部都改掉。如果要实现这个功能要使用很多方法呢,这些方法可能都需要改掉。而且一个项目中要实现很多的功能,如果所有功能实现的方法都需要改的话,那简直就是噩梦呀。

       这个就是不用接口的坏处。

      这时候,这个行业的裁判,就提出我们定义一个规范(接口)吧。你们所有的数据库厂家提供的这个类库都必须遵守这个规范(实现这个接口)。下面我定义下这个接口....接口名为IData。这个接口中有下面的几个方法(不实现)。Connect()是连接数据库、Change()是修改数据库中的数据、Close()关闭数据库(不需要具体实现,当各个厂家实现这个接口的时候,就必须具体实现这些方法)。

      在有这些规范的情况下,重复上面的情景(并且A、B厂家都遵守规范)。

      当小王使用A厂家提供的类库时写的代码大致如下:

    IData xiaowang = new DataA();
    xiaowang.Connect();   //连接数据库
    xiaowang.Change();   //修改数据库中的数据
    xiaowang.Close();      //关闭数据库连接

    项目开发完成A厂家倒闭(......)。换用B厂家的类库,实现这个功能的代码要修改成如下的样子:

    IData xiaowang = new DataB();
    xiaowang.Connect();   //连接数据库
    xiaowang.Change();   //修改数据库中的数据
    xiaowang.Close();      //关闭数据库连接

    实际上,修改的内容就只是把DataA类库改成DataB类库就好了,因为Connect,Change,Close方法都是接口定义的方法,dataA和dataB都会实现的。这样在项目修改的时候就很大程度的减少了程序员的工作量,而且在理想的情况下,小王开发数据库功能的时候,就只需要学习这个接口就可以了,没必要去关心每个厂家的类库,这样也就减少了学习的成本。

  • 相关阅读:
    C语言II博客作业02
    C语言II博客作业01
    C语言II博客作业04
    C语言II博客作业03
    C语言II博客作业02
    C语言II博客作业01
    C语言||博客作业04
    C语言II博客作业04
    C语言II博客作业03
    C语言II博客作业02
  • 原文地址:https://www.cnblogs.com/blackcatcjy/p/3885809.html
Copyright © 2011-2022 走看看