Monthly Archives: July 2015

一条接口设计的简单准则

接口设计不太好掌握,很多朋友总是会陷入实现的细节里去,其实接口本质上是行为集合的抽象,一条很简单的原则就是,

假设你已经拿到了一个构造良好的对象,你希望能对它做什么。

一个简单的例子就是setXXX的方法一旦出现在接口里,就往往意味一种接口设计上的错误,因为你已经构造好了一个对象,set往往标志着对象状态的改变,这种改变往往会影响行为的实现,而对象行为一般希望在一个一致的状态上去运行,但我们见到的接口确实有setXXX的时候,比如Spring的一些XxxAware接口,这种接口都是非常特殊的,是一种回调性质的接口,这样的接口不是为了改变对象的状态,恰恰是为了把对象构造到一个稳定的状态,一旦构造完成,永远不应该再主动的去调用这个set方法了。再比如ConfigXXX之类的接口,setXXX本身就是他的行为,除此之外一旦出现setXXX方法在接口里不防思索再三。