日期:2014-05-17 浏览次数:20839 次
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>();也许更好。
依赖倒转原则中,提到要面向接口编程,不要面向实现编程。
------解决方案--------------------