模板方法设计模式
在定义功能时,功能的一部分是确定的,但是有一部分是
不确定的,而确定的部分在使用不确定的部分,那么
这时就将不确定的部分暴露出去。由该类的子类去完成
假设教育部规定了高校新生报到的流程(这好比写好了算法的骨架),
流程为凭录取通知书到教务处报到->缴费->本院系报到(获取自己的专业班级信息)
->教材科领取教材。
public class 高校
{
//这就是一个模板方法,定义了算法的骨架
public final void 报到()
{
教务处报到();
缴费();
本院系报到();
教材科发教材();
}
protected abstract void 教务处报到();
protected abstract void 缴费();
protected abstract 专业等信息 本院系报到();
protected abstract 教材 教材科发教材();
}
但是各个具体的院校因为自己的情况对这个步骤作进一步补充:
清华大学(该校信息技术及其发达,处处透露出信息化气息)。
清华大学的学生领取的通知书是一张磁卡,学生拿着磁卡到教务处报到只需要去刷卡即可,
该卡还具有银行支付功能,学生只需要向该卡转入学费就可以完成缴费,
但是必须是先到教务处报到后该卡才生效。学生缴费以后由电子系统自动到学生院系报到
并通过手机短信方式将学生专业班级信息发送给学生,完成后由学校的物流配送系统将
学生教材送到学生寝室。
public class 清华大学 extends 高校
{
protected void 教务处报到()
{
//刷卡
}
protected void 缴费()
{
//银行卡转账
}
protected 专业等信息 本院系报到()
{
//系统自动将学生信息转入到院系信息系统
//系统将学生专业班级信息发送到学生手机
return 手机短信方式的专业等信息
}
protected 教材 教材科发教材()
{
//学校物流配送系统送教材
return 教材
}
}
北京大学(该校认为作为有深厚文化底蕴的高校,应该注重人文气息,
不能用冷冰冰的电子设备代替人工,所以该校报到过程全部人工化)该校通知书为普通纸片,
到教务处报到需要学生签字处长签字,然后到财务处缴纳学费,然后到院系见书记一面,
给了你一张有专业班级等信息的卡片,最后拿个袋子到教材科装教材回寝室了。
public class 北京大学 extends 高校
{
protected void 教务处报到()
{
//学生签字
//教务处处长签字
//报到完毕
}
protected void 缴费()
{
//到财务处缴纳现金
}
protected 专业等信息 到本院系报到()
{
//见到院书记
return 纸片方式的专业等信息
}
protected 教材 教材科发教材()
{
//自备袋子到教材科
return 教材
}
}
|