黑马程序员技术交流社区

标题: 模板方法设计模式——拓展一下 [打印本页]

作者: 空。    时间: 2015-6-12 23:01
标题: 模板方法设计模式——拓展一下
模板方法设计模式
        在定义功能时,功能的一部分是确定的,但是有一部分是
        不确定的,而确定的部分在使用不确定的部分,那么
        这时就将不确定的部分暴露出去。由该类的子类去完成


假设教育部规定了高校新生报到的流程(这好比写好了算法的骨架),
流程为凭录取通知书到教务处报到->缴费->本院系报到(获取自己的专业班级信息)
->教材科领取教材。
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 教材
                }
        }


作者: sk0806    时间: 2015-6-12 23:03
我擦,最后这个例子相当不错
作者: 空。    时间: 2015-6-12 23:05
sk0806 发表于 2015-6-12 23:03
我擦,最后这个例子相当不错

:kiss::kiss::kiss:
作者: 柳叶飞刀    时间: 2015-6-12 23:05
小伙儿不错,好好学习  
作者: 空。    时间: 2015-6-12 23:07
柳叶飞刀 发表于 2015-6-12 23:05
小伙儿不错,好好学习

:#一起学习学习
作者: 黄智    时间: 2015-6-12 23:20
这个受教,楼主可以哟。
作者: 天涯111    时间: 2015-6-12 23:21
进来学习一下,楼主是大神啊!!!
作者: qian0217wei    时间: 2015-6-13 00:25
我学着这个是通过getTime的例子来学习的,表示楼主说得很好!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2