日期:2014-05-17 浏览次数:21007 次
public IList<string> GetShipCountries()
{
OrderDAL orderDAL = new OrderDAL();
List<string> countries =new List<string>();
if (orders != null && orders.Count > 0)
{
foreach (Order order in orders)
{
if (!countries.Contains(order.ShipCountry))
{
countries.Add(order.ShipCountry);
}
}
}
else
{
countries = orderDAL.GetShipCountries();
}
return countries;
}
interface IYouYong
{
void Method();
}
class Person:IYouYong
{
void Method()
{
}
}
然后我们可以这样去定义个接口变量【用该接口的实现类(这里就是Person)进行初始化】
IYouYong subject=new Person();
subject.Method();
------解决方案--------------------
接口是一种约束,也是一个父类,在父类代替子类做事中,接口作用就很大了,很多设计都源于此
------解决方案--------------------
问题:
1.接口到底是什么东西,该什么时候用
2.函数不是要求返回接口吗public IList<string>? 为什么返回的是List<string> ?
回答:
1.接口是一个定义的规范,是一个抽象的概念,没有具体的实现。大型项目时,一般先定义系统功能所需要的接口,在JAVA或C#中,主要是用于解决类不能多继承的问题来设计的,用了接口就可以实现多继承(类只能继承一个,而接口可以实现很多个)。
2.List<string>实现了IList<string>接口,或者说List<string>是IList<string>的“子类”,这就是“里氏替换”原则,也就是说父类出现的地方,子类一定可以出现。
------解决方案--------------------
看来还是云里雾里,只有实践了才会有更深的理解
------解决方案--------------------
接口定义的是行为,LIST<STRING>来实现ILIST<STRING> 。可以去看看接口和继承这一块的内容 ,属于C#基础知识。
------解决方案--------------------
接口是规范代码 降低藕度
继承接口都类都有了限制这样能做到规范
代码规范后就不容易出现冗余的代码。不过。当然不是什么地方都用接口用不好程序越来越难理解
------解决方案--------------------
9楼回答的很详细。
public IList<string> GetShipCountries()
{
OrderDAL orderDAL = new OrderDAL();
List<string> countries =new List<string>();
//如果更改为IList<string> countries =new List<string>();也许更好。
依赖倒转原则中,提到要面向接口编程,不要面向实现编程。
------解决方案--------------------