今天来看提示二十: 接口优于抽象类。
Java 有两种机制来定义允许多个实现的类型:接口和抽象类。
接口有如下几个的优点:
- 现有的类可以很容易地进行改进来实现一个新的接口。
- 接口是定义混合类型(mixin)的理想选择。
- 接口允许构建非层级类型的框架。
- 接口通过包装类模式确保安全,使得强大的功能增强成为可能。
接着作者介绍了模板方法的设计模式,可以结合接口和抽象类的优点。
- 接口定义了类型,可能提供了一些默认的方法,而骨架实现类在原始接口方法的顶层实现了剩余的非原始接口方法。
- 它们提供抽象类的所有实现的帮助,而不会强加抽象类作为类型定义时的严格约束。
- 由于接口不允许为 Object 类方法提供默认实现,因此所有实现均放置在骨架实现类中。
模板方法在我们系统中也有很多应用,我印象比较深刻的就是更新订单的逻辑,在顶层就设计好了大概的步骤,接着根据不同的flow逐步细化,最后再由终端的类去实现最后的细节。但是我发现我自己在写代码的时候一般不会这样设计,可能是一开始接触到的需求都没有这么复杂?还是在设计代码的时候偷懒了?以后在动手写之前要注意多思考怎么去安排代码结构。
网友评论