Bootstrap

抽象的艺术:如何在Java项目中做出正确的抽象决策?

有时候经常看着项目里层层叠叠的接口和抽象类,就像看着套了好几层的俄罗斯套娃,搞得头晕眼花。但是其实这样的抽象方式是有其中的道理的。

过度抽象的诱惑

我刚接触设计模式的时候有一个非常激动的想法:抽象这个概念太牛逼了!抽象得越多架构就越优雅。结果就像你说的,写出了只有一个实现类,却有三四层接口继承的代码。就像那句话说的:

"如果你有一个锤子,你看什么都像钉子。如果你刚学会了抽象,你看什么都想抽象。"

但问题是,过度抽象不仅没有带来好处,反而会增加代码复杂度,让其他开发者阅读代码时要在多个接口之间来回跳转,并且会搞出很多不必要的间接层,每一层抽象都是一个需要维护的契约,几个月之后你在看你的代码,你会在层层抽象中想扇以前的自己几巴掌。

什么时候需要抽象?

有几个情况很适合来搞抽象:

1.当你确实需要

;