java常用设计模式8——模板方法模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_31093133/article/details/83865911

这个设计模式应该是最简单的设计模式,因为大家平时都在使用,可能只是不知道它还是个设计模式吧

相关代码下载:

GitHub - GodisGod/DesignPatternStudy: 设计模式学习demo
https://github.com/GodisGod/DesignPatternStudy

模板方法其实就是封装一个固定的流程,就像一个模板,开头是什么,中间是什么,结尾是什么,框架都搭好,然后在这个框架内进行具体的操作,不管操作有什么区别,整体的执行流程始终不会改变。

举例:
我们玩两款游戏,这两款游戏都要经过创建角色,设置角色名字,开始游戏和通关游戏四个步骤,虽然游戏内容不尽相同,但是流程都是一样的,所以我们可以使用模板方法模式。

代码示例:

public abstract class PlayGame {
    protected void createRole() {
        Log.i("LHD", "创建角色");
    }

    protected void setName() {
        Log.i("LHD", "设置名字");
    }

    protected void startGame() {
        Log.i("LHD", "开始游戏");
    }

    protected void finishGame() {
        Log.i("LHD", "通关游戏");
    }

    public void play(){
        createRole();
        setName();
        startGame();
        finishGame();
    }

}

创建好模板以后就可以开始创建两个游戏类了:

游戏一:Heroes 
public class Heroes extends PlayGame{
    @Override
    protected void createRole() {
        Log.i("LHD","我创建了一个角色(#^.^#)");
    }
}

游戏二:Knight 
public class Knight extends PlayGame {
    @Override
    protected void createRole() {
        Log.i("LHD", "创建游戏角色");
    }
    @Override
    protected void setName() {
        Log.i("LHD", "设置角色名字");
    }
}

使用:

	Heroes heroes = new Heroes();
	heroes.play();
	Log.i("LHD", "-----------------我开始玩另一个游戏啦-----------------");
	Knight knight = new Knight();
	knight.play();

输出结果:
template

由上面的例子可以看到,不管游戏的过程有什么不同,他们的执行流程都是一样的,按照模板设置的流程走的。
通过模板方法模式,我们就可以保证逻辑流程不会被子类修改,子类只能够改变其中某一个步骤的具体实现而已,这样就可以保证逻辑流程的稳定性和提高可维护性。

在Android源码中,典型的模板方法模式就是我们的Activity生命周期啦,相信大家一看就明白。
这个设计模式不仅非常简单,而且也是非常重要和经常使用的一种设计模式。

以上就是模板方法设计模式的简单介绍啦(#^ . ^#)

猜你喜欢

转载自blog.csdn.net/baidu_31093133/article/details/83865911
今日推荐