简介:在一个抽象类中,定义一个主流程,对外只暴露一个主流程的调用方法,主流程中调用类中的其他抽象方法,完成这一流程。让这个抽象类的子类来实现抽象方法。一般主流程不需要改变,拓展时只需增加子类实现。
例子:
定义一个主流程:人每天生活的主流程不变,早中晚。
public abstract class Person { //每天的生活 public void enjoyLife(){ morning(); afternoon(); evening(); } abstract void morning(); abstract void afternoon(); abstract void evening(); }
高富帅的一天:
public class GaoFuShuai extends Person { @Override void morning() { System.out.println("GaoFuShuai play"); } @Override void afternoon() { System.out.println("GaoFuShuai eat"); } @Override void evening() { System.out.println("GaoFuShuai sleep"); } }
程序员的一天
public class ChenXuYuan extends Person { @Override void morning() { System.out.println("ChenXuYuan work"); } @Override void afternoon() { System.out.println("ChenXuYuan work"); } @Override void evening() { System.out.println("ChenXuYuan work"); } }
Test:
public class Test { public static void main(String[] args) { Person person = new ChenXuYuan(); person.enjoyLife(); System.out.println("-----------"); Person person1 = new GaoFuShuai(); person1.enjoyLife(); } }
结果:
ChenXuYuan work ChenXuYuan work ChenXuYuan work ----------- GaoFuShuai play GaoFuShuai eat GaoFuShuai sleep