一、模板模式
模板模式预先定义一个模板,这个模板包含了一些通用的功能,而将某些特定的实现交给子类或者接口来完成。比如去银行办理业务的步骤就是一个模板。
办理任何业务都需要:
①排号
②办理具体的业务
③评价
使用抽象类的模板模式
1.1总框架模板
//银行业务模板
package k1;
public abstract class BankBueeinessTempelate {
//取号
protected long takeNumber() {
int r=(int)(Math.random()*1000);//Math.random(),0—1之间的随机数
return r;
}
//具体的业务,声明为抽象方法,交给子类来实现
protected abstract String doAction(long number);
//保存客户反馈
protected void saveEvaluation(long number,String evaluation) {
System.out.println("号码"+number+"的评价是"+evaluation);
}
//总业务
public void business() {
//取号
long number =takeNumber();
//保存客户反馈
String evaluation =doAction(number);
//业务流程
saveEvaluation(number,evaluation);
}
}
1.2办卡业务
package k1;
public class newCard extends BankBueeinessTempelate{
//办理具体的业务
protected String doAction(long number) {
System.out.println("办理开卡业务");
return "五星好评";
}
}
1.3挂失业务
package k1;
//挂失业务
public class lossCard extends BankBueeinessTempelate{
//办理挂失的业务
protected String doAction(long number) {
System.out.println("办理挂失业务");
return "五星好评";
}
}
1.4测试结果
package k1;
public class day1406 {
public static void main(String[] args) {
newCard newcard=new newCard();
newcard.business();
lossCard losscard=new lossCard();
losscard.business();;
}
}
上面的例子是使用抽象类的模板模式,这种设计有一个缺点,newCard类必须要继承BussinessTemplate,由于java不允许多继承,因此newCard不能再继承别的类。可以使用接口避免这个问题,使用接口的模板模式。具体见 java第7集 模板模式(二)。
java第7集 模板模式(二)