摸板方法

先看例子:

抽象类:

package com.mashup.pattern.template;

public abstract class TemplatePatternModel {
 
 public final void prepareDrink(){
  
  boilWater();
     
  makeDrink();
  
  drew();
  
  if(needCustomer())
  {
   addCondiment();
  }
  
 }
   
 private final void boilWater(){
  System.out.println("boil water......");
 }
 
 private final void drew(){
  System.out.println("drew............");  
 }
 
 public abstract void makeDrink();
 
 public abstract boolean needCustomer();//钩子
 
 public abstract void addCondiment();
 
 
}

子类一:

package com.mashup.pattern.template;

public class MakeCoffee extends TemplatePatternModel{

 public MakeCoffee() {
  // TODO Auto-generated constructor stub
 }
 @Override
 public void addCondiment() {
  
  System.out.println("add milk .............");
 }

 @Override
 public void makeDrink() {
  
  System.out.println("make coffee.............");
 }

 @Override
 public boolean needCustomer() {
  
  return false;
 }

}

子类二:

package com.mashup.pattern.template;

public class MakeTea extends TemplatePatternModel{
 public MakeTea() {
  // TODO Auto-generated constructor stub
 }

 @Override
 public void makeDrink() {
  
  System.out.println("make tea.............");
 }

 @Override
 public void addCondiment() {
  
  System.out.println("add lemon.........");
 }

 @Override
 public boolean needCustomer() {
  
  return true;
 }

}

测试:

package com.mashup.pattern.template;

public class TestMain {

 /**
  * @param args
  */
 public static void main(String[] args) {
  
  MakeTea tea = new MakeTea();
  
  MakeCoffee coffee = new MakeCoffee();
  
  tea.prepareDrink();
  System.out.println("...........................................");
  coffee.prepareDrink();

 }

}

结果:

boil water......
make tea.............
drew............
add lemon.........
...........................................
boil water......
make coffee.............
drew............

 

UML图:

  略

说明:

抽象类中,预先定义了若干方法,包括钩子算法,具体的实现延迟到子类中去实现----就是在抽象类中定义个算法的摸板

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值