模板方法模式,在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。
优点
(1)模板方法模式通过把不变的行为搬移到父类,去除了子类中的重复代码。
(2)子类实现算法的某些细节,有助于算法的扩展。
(3)通过一个父类调用子类实现的操作,通过子类扩展增加新的行为,符合“开放-封闭原则”。
代码实例
public abstract class AbstractMike {
final void make() {
System.out.println("制作开始");
dosing();
flavour();
addWater();
System.out.println("制作完成");
}
// 添加配料(让子类实现)
public void dosing() {}
private void addWater() {
System.out.println("添加水");
}
private void flavour() {
System.out.println("添加调料");
}
}
public class AppleMike extends AbstractMike{
@Override
public void dosing() {
System.out.println("我添加了苹果");
}
}
public class PearMile extends AbstractMike{
@Override
public void dosing() {
System.out.println("我添加了梨");
}
public static void main(String[] args) {
AbstractMike abstractMike = new AppleMike();
AbstractMike abstractMike1 = new PearMile();
abstractMike.make();
System.out.println("-----------------------------");
abstractMike1.make();
}
}