C#接口理解

来源:互联网 发布:阿里云 多隆 编辑:程序博客网 时间:2024/05/30 04:21

我们设想有一个项目组,其中有一个PM和3个Programmer。下面我们分别站着这个PM和Programmer的立场上理解接口的作用,因为只有从具体项目中才能真正体会到一个概念的意义所在。

首先,我们站在PM的角度来理解接口。

这个项目组现在开展一个项目,其中包括使用3个不同种类的摄像头来进行图像的采集和处理。这里就可以用到接口了,首先PM研究了这3个摄像头的具体功能,就设计了一个接口,并命名为ICamera,这个ICamera接口中包含了3个方法,分别为摄像头初始化,打开摄像头和关闭摄像头。至此,PM的任务完成了。为什么呢?因为PM是整个系统的构架师,依据面向接口的编程思想来设计这个接口。然后,就是PM来发号施令的时候了。

PM对3个Programmer的要求就是:每个人负责设计一种摄像头类,前提是要继承ICamera接口。到这里,我们已经可以理解PM的意图:这个接口就是一个协定,或者叫做一个协议,规定了这3个类的设计必须要根据这个ICamera来进行。那么,这3个Programmer在分别进行这3个摄像头的类的设计的时候,就必须要将ICamera接口中的3个方法进行实现。这也就说明了这3个摄像头类遵守了接口ICamera的规定。

那么,这么做有什么好处呢?站在用户的角度来说,就是站在使用这3个类的程序员角度来说,不需要知道这3个类的具体实现,也不要大费周章的在这3个类中去寻找关于这3个摄像头的具体使用方法,而是只需要在ICamera接口中知道有这3个方法就行了,因为根据协议,这3个类必须都要实现ICamera接口中的3个方法。所以,如果我们仅仅站在使用这3个类的角度来说,只需要了解这个接口中有什么方法就行了,然后具体使用哪个摄像头,就定义哪个摄像头类的对象,然后调用相应的方法就可以了。从这里可以看出,使用接口可以让整个系统的条理很清晰,可以使编写类的过程和使用类的过程分离,降低的耦合性,便于系统的维护。

下面,我们站在Programmer的角度来理解接口。

现在,这个产品已经过了2年,由于公司需要进行更新产品,需要在原来的基础上增加两个摄像头,其他东西不需要大改。但是这个时候那3个Programmer已经跳槽了。公司又新请了两个Programmer,由于有接口协定的存在,这两个Programmer只需要知道接口中有哪些方法就行了,很快就会再根据接口的协定来进行这2个摄像头类的设计。这样,新产品又可以进行更新了。从另一方面讲,这两个新来的Programmer也可以对之前3个摄像头类进行代码维护。至此可以看出,接口协定机制从一定程度上提高了代码的扩展性和维护性。

从上面的分析,我们可以看出:接口这种”机制“的引进不仅方便了系统设计人员的整体构架,而且约束了编码人员的界限,使整个软件的设计流程非常清晰,大家各司其职,有条不紊。

至此,2012年7月11日,22:06。

原创粉丝点击