日期:2014-05-18  浏览次数:21089 次

如何使用接口?
在使用多态面向对象时,有时会使用接口,可什么时候用啊?有时候接口显得多余啊?谁能帮我具体解释一下啊?

------解决方案--------------------
接口实际上是表示 can do 的关系:我能,我能干什么,我有什么功能。

接口的优点:
接口支持多继承
使代码更灵活(用作参数)
使代码的职责更明确

接口的作用:
接口提供了一种约定,可作为业务规则的模板
实现动态绑定
接口是让多个类之间有共同的标准



------解决方案--------------------
相比抽象类接口是轻量级的,可多继承, 其实这些楼上已经都说了,也说得差不多了

让客户程序 依赖于 抽象(依赖倒置) 这样 维护了客户端的稳定性, 如果你有新功能要替代旧有的一些功能,那么这样做可以在客户端代码可保持不变情况下完成

这在组件编程中 还是很重要的,因为 组件依赖于接口 在接口上实现逻辑(面向接口的开发) 这样这个组件

将 在接口没实现的情况下 "提前"完成 而且还具象什么 可伸缩性啦,安全性啦,复用性啦,等等 一系列的好处吧,这也就是面向对象的主要好处之一.
------解决方案--------------------
C# code
public interface ISave
{
void SaveData(string data);//data当然可以是更??的数据
}

public class DataManager
{
public ISave Saver{get;set;}
public string Data{get;set;}//当然可以是更??的数据
}

public class TextSaver:ISave
{
public void SaveData(string data){}//保存到文本文件
}

public class DataBaseSaver:ISave
{
public void SaveData(string data){}//保存到数据?
}
....
public static main(..)
{
DataManager dm=new DataManager();
dm.data="adfqwei";
dm.Saver=new TextSaver();
dm.SaveData();//保存到文本文件(可以只更改TextSaver()?或??多个?到保存?.txt,.doc,.xml等文件
dm.Saver=new DataBaseSaver();
dm.SaveData();//保存到数据?(可以只更改DataBaseSaver()?或??多个更?到保存到多?数据?(access,sql等);
}