做一件事情,流程是固定的,其中存在不确定的同一类事务。
例如:
去店里吃饭:1、进入店铺。2、点单。3、吃饭。
不确定的是第二步:点单。
实现:
在父类中定义好统一的处理步骤(为不可重写的方法 final ),由子类实现不同的步骤后,调用统一的处理步骤。一般可以使用匿名内部类简化。
比如我从睡醒到出门上班这一流程。
父类:
public abstract class Template { public void first(){ System.out.println("第一步:睁开眼睛!"); } //待实现的方法 public abstract void second(); public void end(){ System.out.println("最后一步:出门上班!"); } //处理步骤在父类中定义好 public final void doSomethings(){ first(); second();//像个钩子,执行时挂哪个子类就调用哪个子类的方法 end(); } }
子类:
class Second extends Template{ @Override public void second() { System.out.println("第二步:穿衣服、洗漱、照镜子、吃早餐"); } }
测试:
public class Client{ public static void main(String[] args) { Second s = new Second(); s.doSomethings(); System.out.println("-----------------"); //使用匿名内部类 Template s2 = new Template() { @Override public void second() { System.out.println("第二步:吃饭饭"); } }; s2.doSomethings(); } }
测试结果:
标签:void,System,模式,Template,println,public,模板,out From: https://www.cnblogs.com/lurenjia-bky/p/16928183.html