今天我要向大家介绍的设计模式叫做模板模式。模板模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤(摘自菜鸟教程)。模板模式在开发中使用的非常的频繁并且在spring中大量的使用了模板模式。
1.定义一个抽象模板类:
//制作饮品 public abstract class MakeDrink { private void boilWater(){ System.out.println("烧水"); } protected abstract void machining(); //加工 protected void encapsulation(){ System.out.println("把做好的饮品倒进杯里"); } //防止子类重写 public final void getDrink(){ boilWater(); machining(); encapsulation(); } }
2.定义具体的饮品类:
public class TeaDrink extends MakeDrink{ @Override protected void machining() { System.out.println("加入茶叶"); } } public class OffeeDrink extends MakeDrink{ @Override protected void machining() { System.out.println("加入咖啡豆"); } }
3.客户端调用:
public static void main(String[] args) { MakeDrink offeedrink = new OffeeDrink(); offeedrink.getDrink(); System.out.println("==========="); MakeDrink teadrink = new TeaDrink(); teadrink.getDrink(); } 执行结果: 烧水 加入咖啡豆 把做好的饮品倒进杯里 =========== 烧水 加入茶叶 把做好的饮品倒进杯里
使用模板模式可以实现代码的复用,但是每个不同的实现都需要一个子类会导致类的数量增加并且继承也使代码耦合在了一起。