接着java第7集 模板模式(一)
①首先设置好接口
package k1;
//银行具体业务接口
//接口BankAction定义了一个具体业务都需要实现的接口
public interface bankAction {
//办理具体的业务
String doAction(long number);
}
②业务模板
//银行业务模板
package k1;
//public abstract class BankBueeinessTempelate {
public class BankBussinessTempelate {
//取号
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 bussiness() {
public void bussiness(bankAction action) {//BankAction action为传进来的具体业务的对象
//public void bussiness(lossCard action),则单纯只能办理开卡业务,而使用接口类型的参数,可以使这个方法更加通用
//取号
long number =takeNumber();
//保存客户反馈
String evaluation =action.doAction(number);//多态的体现,调用实际引用对象的doAction方法
//业务流程
saveEvaluation(number,evaluation);
}
}
③办卡业务
package k1;
public class newCard implements bankAction{
//办理具体的业务
public String doAction(long number) {
System.out.println("办理开卡业务");
return "五星好评";
}
}
④挂失业务
package k1;
//挂失业务
public class lossCard implements bankAction{
//办理挂失的业务
public String doAction(long number) {
System.out.println("办理挂失业务");
return "五星好评";
}
}
⑤开始测试代码
package k1;
public class day1406 {
public static void main(String[] args) {
BankBussinessTempelate template =new BankBussinessTempelate();
newCard newcard =new newCard();
lossCard losscard=new lossCard();
//模板执行开卡业务
template.bussiness(newcard);
//模板执行挂失业务
template.bussiness(losscard);
}
}