有个抽象类 Job,代码如下
public abstract class Job {
public boolean start(){
int id = a();
processId(id);
String data = b();
processData(data);
return c();
}
public abstract int a();
public abstract String b();
public abstract boolean c();
public void processId(int id){
...
}
public void processData(String data){
...
}
}
Job 封装了一个任务的主流程:a()->b()->c(),其中 abc 方法均为抽象类,由子类实现,中间穿插一些公共的方法,如 processId,processData,在父类实现。
这是一种比较常见的封装,乍一看没什么问题。
但是当 Job 的实现类很多,同时整个主流程变得复杂的时候,各种抽象方法和父类的公共方法穿插调用,特别是其他人去看代码的时候,就会变得特别痛苦,需要不断从子类和父类中跳转,以看清整个流程的全貌,此时子类的可读性就会变得很差。
作为读者,在面对多个子类任务的时候,我希望每个类都能看懂整个流程,作为开发者,有没有什么好的设计模式,能够在适当的封装下,又提高代码的可读性呢?