铁匠

做人要低调
随笔 - 133, 评论 - 255 , 引用 - 184

导航

公告

文章分类

存档

随笔分类

相册

BLOG

网站

论坛

接口和抽象类

接口和抽象类看着这么相似,又那么不同:

  1. 接口和抽象类都不能直接使用,只能被继承或实现.
  2. 一个新的类只能继承自一个抽象类(对于现在绝大部分的语言是这样的),但可以实现多个接口

个人感觉,对于接口来说,更加偏向一种约定,只要实现这种约定的对象我们就可以就可以按这个约定来调用;而抽象类相比之下缺少灵活的感觉.

举一个CRM的例子,财务要备案并汇总各地返回来的表报,假设各地由于种种原因都没有统一自己的工具:A地给的是excel表格,B地给的是Access库,C地给的是lotus的电子表格。这时候用个抽象类就可以搞定了(以类C方式实现)

class DataReader{

public loadFromFile(string fileName);

public ReadRow();

public Pre();

public Next();

public First();

public Last();

}

从这个去继承出来ExcelDataReader,AccessDataReader, LotusDataReader,来实现数据的读取和导入。可是这时候D地的自动化程度比较高,提供了WebServices的读数据接口。很显然上面的这种方式不在适用了。这时候如果用接口的话,就方便多了:

interface IDataReader{

public Open(string fileName);

public ReadRow();

public Pre();

public Next();

public First();

public Last();

}

到时候不同的实现方式实现这个接口就可以被统一调用了。

以接口的方式来实现还有一个好处就是一个对象可以实现多个接口,用人来举这个例子最好了:一个人有社会性又有他的动物性,这就是说人同时继承了两个接口:社会接口和动物接口。当从社会方面来调用的时候,就可以让这个人去工作,结婚,遵守一些道德;从动物方面来调用的时候,就可以让这个人吃喝拉撒。

发表于 2007年8月21日 16:49

评论

No comments posted yet.

Post Comment

主题  
姓名  
主页
校验码  
内容   
京ICP备 05050892号