A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

定义    模板设计模式,定义一组算法的框架,这些算法的步骤大致相同。而将这些算法中不同的步骤延迟到子类中实现。
例子
我们玩儿游戏,一般需要经历这几个步骤,加载游戏、读取存档、开始游戏、存档、结束游戏,现在将这些步骤固定下来,这样这样不同的游戏就可以根据这个模版进行开发,实现自己的游戏方式了。
首先,定义好我们的方法
[Java] 纯文本查看 复制代码
public abstract class AbstractGame {
    public final void play(){
        this.loading();
        this.read();
        this.start();
        this.save();
        this.end();
    }

    /**
     * 加载游戏
     */
    public abstract void loading();

    /**
     * 读档
     */
    public abstract void read();

    /**
     * 开始游戏
     */
    public abstract void start();

    /**
     * 游戏存档
     */
    public abstract void save();

    /**
     * 结束游戏
     */
    public abstract void end();
}


比如我们常见的超级玛丽
[Java] 纯文本查看 复制代码
public class SuperMario extends AbstractGame {
    @Override
    public void loading() {
        System.out.println("嗨,我是超级马里奥");
    }

    @Override
    public void read() {
        System.out.println("我的档案是联网保存的");
    }

    @Override
    public void start() {
        System.out.println("吃蘑菇,打小怪");
    }

    @Override
    public void save() {
        System.out.println("联网保存档案");
    }

    @Override
    public void end() {
        System.out.println("我是超级马里奥,拜拜");
    }
}

还有贪吃蛇
[Java] 纯文本查看 复制代码
public class Snake extends AbstractGame {
    @Override
    public void loading() {
        System.out.println("hello,我是贪吃蛇");
    }

    @Override
    public void read() {
        System.out.println("贪吃蛇的档案");
    }

    @Override
    public void start() {
        System.out.println("开始吃豆子");
    }

    @Override
    public void save() {
        System.out.println("保存长度");
    }

    @Override
    public void end() {
        System.out.println("结束");
    }
}

运行一下
[Java] 纯文本查看 复制代码
public class PlayGame {
    public static void main(String[] args) {
        System.out.println("------------开始玩儿超级马里奥------------");
        AbstractGame game1 = new SuperMario();
        game1.play();
        System.out.println("------------开始玩儿贪吃蛇---------------");
        AbstractGame game2 = new Snake();
        game2.play();
    }
}

运行结果
[Java] 纯文本查看 复制代码
------------开始玩儿超级马里奥------------
嗨,我是超级马里奥
我的档案是联网保存的
吃蘑菇,打小怪
联网保存档案
我是超级马里奥,拜拜
------------开始玩儿贪吃蛇---------------
hello,我是贪吃蛇
贪吃蛇的档案
开始吃豆子
保存长度
结束


总结
模板设计模式,就是将公用的步骤抽取出来,具体的实现交由不同的子类实现。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马