net 对接口的理解

我是通过此文章理解了接口,觉得非常实用,借来一用

c#为什么要使用接口?通俗的讲,就是为了降低耦合度。给大家看一个我见过的很搞笑的例子。看看下面的程序:一个学校里边,有两种人:学生、老师。他们都要吃饭和睡觉。

 

 

 1public interface I人 
 2ExpandedBlockStart.gifContractedBlock.gif{  
 3    void 吃饭();  
 4    void 睡觉();  
 5}
 
 6public class 学生:I人 
 7ExpandedBlockStart.gifContractedBlock.gif{  
 8    public void 吃饭() 
 9ExpandedSubBlockStart.gifContractedSubBlock.gif        //去食堂吃饭 } 
10    public void 睡觉() 
11ExpandedSubBlockStart.gifContractedSubBlock.gif        //回寝室睡觉 } 
12    //其他特有方法,比如泡妞、打游戏 
13}
 
14public class 老师:I人 
15ExpandedSubBlockStart.gifContractedSubBlock.gif
16    public void 吃饭() 
17ExpandedSubBlockStart.gifContractedSubBlock.gif        //回家吃饭 } 
18    public void 睡觉() 
19ExpandedSubBlockStart.gifContractedSubBlock.gif        //回家睡觉 } 
20    //其它特有方法,比如为生儿育女传宗接代的历史使命努力等“不足为外人道也”的事情 
21}
 
22public class 学校 
23ExpandedSubBlockStart.gifContractedSubBlock.gif
24    public void 开饭(I人 ren) 
25ExpandedSubBlockStart.gifContractedSubBlock.gif        { ren.吃饭(); } 
26    public void 放学(I人 ren) 
27ExpandedSubBlockStart.gifContractedSubBlock.gif        { ren.睡觉(); } 
28}
 

29

 

这里就用到了里氏代换原则,"开饭()"和"放学()"的参数都是人,那么这个地方如果换成学生和老师肯定也可以。

1I人 某学生 = new 学生(); 
2某学生.开饭(); 
3某学生.放学(); 

 

这样执行的结果就是学生回寝室吃饭。

 

1I人 某老师 = new 老师(); 
2某老师.开饭();  
3某老师.放学(); 

 

这样执行的结果就是老师回家吃饭。
    为什么要这样写呢?这样写有什么好处呢? 我在开饭的时候完全可以直接调用“学生.吃饭();”、“老师.吃饭();”。接着看,有一天,学校里来了第三种人,家长。 家长既不是去寝室睡觉也不是回家睡觉,而是旅馆睡觉,既不是去食堂吃饭也不是回家吃饭,而是去下馆子。 这个时候学校这个系统该怎么处理呢? 如果原来没有定义"I人"这个接口那就麻烦啦,所有用到人的地方代码都要改。 现在不一样了,我可以直接定义一个类:家长,这个类实现人这个接口就可以了。 好,看代码:

 

1public class 家长:I人 
2ExpandedBlockStart.gifContractedBlock.gif
3    public void 吃饭() 
4ExpandedSubBlockStart.gifContractedSubBlock.gif        //下馆子 } 
5    public void 睡觉() 
6ExpandedSubBlockStart.gifContractedSubBlock.gif        //去旅馆睡觉 } 
7    //其它特有方法,比如会见老师,晓之以钱,动之以利等等,不一而足 
8}

 

 

 在调用的时候不需要修改任何代码,还和原来一样:
I人 某家长=new 家长();
某家长.开饭();
某家长.放学();
    轻松搞定家长的食宿问题! 这样一来学校来再多的客人都没关系啊,绝对可以应付自如,这也就是传说中的可扩展性!不知道大家看到这里是不是能够明白接口的作用。如果你还不明白,那么你把人这个接口去掉,自己写一个学校开饭和放学的类,然后再加一个家长这个新新人类进去,看看你的代码是什么样子的,再想一下在人口这么多的中国,万一哪天你的学校里来了成千上万个新新人类你该怎么办!
    先声明一下,这个案例可不是我想出来的~~
    然后我们就很好理解了,为什么用别人的东西要实现接口呢?很直接的一个原因是这样一来,编程的复杂度就可能会大大降低了,不是么?

 

来源:http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=31167

转载于:https://www.cnblogs.com/joylee/archive/2008/10/15/1311796.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值