设计模式(十三):模板模式
优点:
① 定义了一个算法骨架或行为族,而将一些步骤延迟到子类中,可以把公共的代码移到父类里面,从而避免代码重复。
② 具体细节步骤实现定义在子类中,使得子类可以不改变一个算法的整体结构即可以重新定义该算法的某些特定步骤。
缺点:
① 客户端必须知道所有的策略类,并自行决定使用哪一个策略类。
② 由于策略模式把每个具体的策略实现都单独封装成为类,如果备选的策略很多的话,那么对象的数目就会很可观。
适用范围:
算法,折扣活动等
客户端:
DodishTemplate eggsWithTomato = new EggsWithTomato(); //西红柿炒鸡蛋
eggsWithTomato.doDish();
System.out.println("-----------------------------");
DodishTemplate bouilli = new Bouilli(); //红烧肉
bouilli.doDish();
一句话概括:定义一个操作的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可以重新定义该算法的某些特定步骤。
/** * DodishTemplate (做菜模板接口,备料、做菜和上菜方法,及整体过程的方法doDish()) * EggsWithTomato(西红柿炒鸡蛋) Bouilli(红烧肉) -- 两个实例,同一模板做出不同的菜 */