JAVA中Abstract到底有什么用?都用在哪些方面比较合适?
功能向上聚合
Abstract作为抽象类和抽象方法,第一种情况是在聚合子类的通用性上起到作用,往往出现在重构过程中自然而然形成的一种层次结构~希望将多个子类的通用方法和逻辑提取到父层的抽象类。
这种重构情况的最极致表现就是:若再加入新的子类,子类只需要实现抽象类的abstract方法,而且可能就只用几句话的简单声明,或者做一些属性设置就可以了,往往只是用于区分子类的特征,真正的逻辑处理实际上是在抽象类的方法内实现。这样就极大地简化了子类的代码逻辑量,实现子类层去耦合,抽象层高内聚的极佳效果
如下图所示:可以看到流水线作为一个统一的对象抽象概念,下辖了分拣、抽检、加工等子工序…,但是流水线是一个密集的工序,肯定具有大量上下文处理逻辑在里面,那么就加上一个抽象的类,交给抽象类来做,各个子工序只需要将自己份内的工序实现好就可以了。由抽象类来实现工序连接,上下文管理等,统一成为接口方法具体实现的逻辑代表。