首页 > 软件设计 > 面向接口编程的原则

面向接口编程的原则

2009年8月8日 admin 发表评论 阅读评论

面向接口编程是一个重要原则的一个原则,但要真正要获得面向接口编程带来的好处也说易行难。例如,我们对接口定义不清楚,即便在程序的实现上也是通过接口来编程的,但根本没有获得面向接口带来的好处。下面是一些很具体的面向接口编程的CheckList,可以帮助大家在具体编码和设计的时候有一个考量标准。

接口最小化

由于实现类被要求实现接口定义的所有方法,所以在定义接口的时候要特别注意只将那些高内聚的方法定义在同一接口中。例如Queue接口有get()和put()是合适的,但再定义一个length()方法就没有多少必要了。我们使用接口就是为了获取接口实现可以被替换的特性,但如果接口定义过于复杂或者说低内聚,那么就很难对这些接口重新加以实现。系统就被死死地依赖在那个现有的接口实现上了,也就无法享受到面向接口编程的好处。

接口分离

这个标准的意思是一个类不应该依赖那些它使用不到的接口。有时候我们在定义某个接口中的方法实际上是可以分解成多个接口来实现的。而具体类在实现的时候可以选择实现其中的那几个接口。

接口不依赖实现

ClassA如果依赖接口InterfaceB,而InterfaceB去依赖了一个具体类ClassC,那么ClassA也就依赖ClassB。由于接口依赖了一个具体类,从而使所有依赖InterfaceB的类都间接地依赖了接口所以来的具体类。这种情况同样无法享受到面向接口编程的好处。

不使用静方法

不正确的定义和使用静态方法是十分有害的。要坚决地址类似在Queue接口中加入静态方法count()的做法,count()应该是个实例方法。

方法定义要抽象

定义的方法要多关注方法在抽象层面的含义,而不是具体的实现。例如Iterator接口的next()、hasNext()方法的定义就跟具体类的实现没有任何关联。

总结

上面这几个考量标准对于我们在设计编程的时候是十分有帮助的。类似这样的很多原则都是一些很抽象的东西,如果证明我们是贯彻了这些重要的原则,是需要通过一些可分析的考量标准来评价的。

参考资料

Coding an interface
分类: 软件设计 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.