模板方法模式 提高代码的复用性 把常用的基本方法放入父类中 强调一种流程步骤 角色 抽象类 抽象方法 具体方法 钩子方法 空方法 通过bool控制 具体类
看例子
1.银行模板类
package TemplateMethod;
/**
* Created by Jiqing on 2016/10/31.
*/
public abstract class BankTemplateMethod
{
public void takeNumber()
{
System.out.println("取号排队。");
}
public abstract void transact();
public void evaluate()
{
System.out.println("反馈评分。");
}
public void process()
{
this.takeNumber();
this.transact();
this.evaluate();
}
}
2.具体业务
package TemplateMethod;
/**
* Created by Jiqing on 2016/10/31.
*/
public class Deposit extends BankTemplateMethod
{
public void transact()
{
System.out.println("存款");
}
}
package TemplateMethod;
/**
* Created by Jiqing on 2016/10/31.
*/
public class Transfer extends BankTemplateMethod
{
public void transact()
{
System.out.println("转账");
}
}
package TemplateMethod;
/**
* Created by Jiqing on 2016/10/31.
*/
public class Withdraw extends BankTemplateMethod
{
public void transact()
{
System.out.println("取款");
}
}
4.客户端
package TemplateMethod;
/**
* Created by Jiqing on 2016/10/31.
*/
public class Client
{
public static void main(String a[])
{
BankTemplateMethod bank;
bank=new Deposit();
bank.process();
System.out.println("---------------------------------------");
bank = new Transfer();
bank.process();
}
}
结果:
取号排队。
存款
反馈评分。
---------------------------------------
取号排队。
转账
反馈评分。