为什么要使用接口

原创 2007年10月15日 21:10:00
假设我们公司有两种程序员:VB程序员,指的是用VB写程序的程序员,用clsVBProgramer这个类表示;Delphi程序员指的是用Delphi写程序的程序员,用clsDelphiProgramer这个类来表示。   每个类都有一个WriteCode()方法。定义如下:

class   clsVBProgramer()
{
    ....
    WriteCode()
    {
          //用VB语言写代码;
    }
    ....
}

class   clsDelphiProgramer()
{
    ....
    WriteCode()
    {
        //用Delphi语言写代码;
    }
      ....
}

现在公司来了一个项目,要求派某个程序员写一个程序。
class   clsProject()
{
    ....
    WritePrograme(clsVBProgramer   programer)//用VB写代码
    {
        programer.WriteCode();
    }
    WritePrograme(clsDelphiProgramer   programer)//重载方法,用Delphi写代码
    {
        programer.WriteCode();
    }
  ......
}
在主程序中我们可以这样写:
main()
{
      clsProject   proj=new     clsProject;
      //如果需要用VB写代码
      clsVBProgramer   programer1=new   clsVBProgramer;
      proj.WritePrograme(programer1);
      //如果需要用Delphi写代码
      clsDelphiProgramer   programer2=new   clsDelphiProgramer;
      proj.WritePrograme(programer2);
}

但是如果这时公司又来了一个C#程序员,我们怎么改这段程序,使它能够实现用C#写程序的功能呢?我们需要增加一个新类clsCSharpProgramer,同时在此clsProject这个类中要再次重载WritePrograme(clsCSharpProgramer   programer)方法。这下麻烦多了。如果还有C程序员,C++程序员,JAVA程序员呢。麻烦大了!

但是如果改用接口,就完全不一样了:
首先声明一个程序员接口:
interface   IProgramer()
{
    WriteCode();
}
然后声明两个类,并实现IProgramer接口:
class   clsVBProgramer():IProgramer
{
    ....
    WriteCode()
    {
          //用VB语言写代码;
    }
    ....
}

class   clsDelphiProgramer():IProgramer
{
    ....
    WriteCode()
    {
        //用Delphi语言写代码;
    }
      ....
}
对clsProject这个类进行一下修改:
class   clsProject()
{
    ....
    WritePrograme(IProgramer   programer)
    {
        programer.WriteCode();//写代码
    }
    ......
}

main()
{
      clsProject   proj=new     clsProject;
      IProgramer   programer;
      //如果需要用VB写代码
      programer=new   clsVBProgramer;
      proj.WritePrograme(programer);
      //如果需要用Delphi写代码
      programer=new   clsDelphiProgramer;
      proj.WritePrograme(programer);        
}
如果再有C#,C,C++,JAVA这样的程序员添加进来的话,我们只需把它们相关的类加进来,然后在main()中稍做修改就OK了。扩充性特别好!

另外我们如果把clsProject这个类封成一个组件,那么当我们的用户需要要扩充功能的时候,我们只需要在外部做很小的修改就能实现,可以说根本就用不着改动我们已经封好组件!是不是很方便,很强大! 
 

java中为什么要使用接口?

接口的作用最主要的作用我认为是解决java不能多继承的问题。 1.接口可用来实现多重继承,java中多重继承,定义类时,只可有一个父类。但是每个类可以实现多个接口,以这种方式来实现多重继承。 2....
  • JAVA528416037
  • JAVA528416037
  • 2015年07月05日 18:54
  • 1352

javaBean为什么要实现Serializable接口?

Java的"对象序列化"能让你将一个实现了Serializable接口的对象转换成一组byte,这样日后要用这个对象时候,你就能把这些byte数据恢复出来,并据此重新构建那个对象了。这一点甚至在跨网络...
  • chris_paul3
  • chris_paul3
  • 2014年03月12日 09:18
  • 1348

为什么要使用面向接口编程

对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到“面向...
  • z_Dendy
  • z_Dendy
  • 2014年04月01日 13:12
  • 1093

[EntLib]微软企业库5 0 学习之路 第七步 Cryptographer加密模块简单分析 自定义加密接口及使用 下篇

  • 2014年07月28日 10:18
  • 73KB
  • 下载

维肯电子 VK3234 多总线接口四通道通用异步收发器使用

  • 2016年04月22日 22:52
  • 621KB
  • 下载

接口和抽象类使用详细实例源代码

  • 2017年11月03日 14:27
  • 49KB
  • 下载

使用jmeter测试web系统登录接口

  • 2017年11月27日 17:21
  • 646KB
  • 下载

CAN-bus 通用测试软件及接口函数库使用手册

  • 2017年12月27日 15:44
  • 2.42MB
  • 下载

基于nRF51822调试的LIS3DH传感器代码,使用SPI接口

  • 2017年11月24日 10:29
  • 1.07MB
  • 下载

使用HttpClient接口访问工具类

  • 2017年12月12日 15:26
  • 11KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:为什么要使用接口
举报原因:
原因补充:

(最多只允许输入30个字)