下面的例子是使用抽象类的模板模式,这种设计有一个缺点,NewCard类必须要继承BankBusinessTemplate,由于
java不允许多继承,因此NewCard不能再继承别的类。
//银行业务模板
public abstract class BankBusinessTemplate{//抽象类
//取号
protected long takeNumber(){//方法
//1000以内的随机数
int r=(int) (Math.random()*1000);
return r;
}
//具体的业务,声明为抽象方法,交给子类来实现
protected abstract String doAction(long number);//抽象方法
//保存客户反馈
protected void saveEvaluation(long number,String evaluation){//有参方法
System.out.println("号码:"+number+"的评价:"+evaluation);
}
//业务流程
public void business(){//无参方法
//1
long number=takeNumber();
//2
String evaluation=doAction(number);
//3
saveEvaluation(number,evaluation);
}
}
//开卡业务
public class NewCard extends BankBusinessTemplate{//继承类
//办理具体的业务
protected String doAction(long number){//有参有返回方法
System.out.println("办理开卡业务");
return "五星好评";
}
}
//挂失业务
public class LossCard extends BankBusinessTemplate{//继承类
//办理具体的业务
protected String doAction(long number){//有参有返回方法
System.out.println("办理挂失业务");
return "五星好评";
}
}
public class BankRun {
public static void main(String[]args){
NewCard newCard=new NewCard();
newCard.business();
LossCard lossCard=new LossCard();
lossCard.business();
}
}