谈抽象接口的重要性
抽象是架构师最基础最重要的能力之一。一名程序员要成长为架构师,首先要理解接口的重要性。但是对一个没有经验的人来说,他心中可能无法体会“接口”这两个字的含义。
接口就是规范,接口就是协议。为了便于理解,我们可以把它和生活中的事务类比起来,这样就非常容易理解了。
假设在工作中,两个不同部门间有业务来往,如果两个部门间没有定义任何规范,全凭双方的接口人自个做主沟通。这就埋下了很大隐患,一旦其中有某个人变动(如离职),则会严重影响两个部门间的活动。原因就是,这两个部门间的活动太依赖于具体的个人了。
怎么去解决这个问题了?方法非常简单,就是定义好双方的规范或协议,让双方接口人按钮规范来沟通,这样不管人员如何的变动,新人都可以很快的去接手。
规范和协议本身是没有用的,它需要后面的人去执行。
软件开发同样如此,去了解耦合,需要定义规范和和协议。在OO中,接口就是种协议,它屏蔽了可能发生的变化。
只要协议不变,和平就在。因此定义一个具有一定前瞻性的协议是架构师的职责,著名的TCP/IP协议几十年来未有变化,是一个非常好的案例。ProtocolBuffer和Thrift等,为了应对协议变化,增加了optional和required两个性特。
有关如何设置具有前瞻性的接口,不在本文探讨范畴之内,这个需要一定的经验积累。