设计模式系列——模板方法

原创:花括号MC(微信公众号:huakuohao-mc),欢迎分享,转载请保留出处。

模板方法通常用来定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法可以在不改变一个算法的结构的情况下,就可以重新定义该算法的某些特定步骤。

举个例子

我们来实现一个竞技类的电子游戏,大部分的竞技游戏的流程基本上都包含如下过程 初始化游戏,启动游戏,游戏结束这几个步骤,但是不同游戏的初始化和启动方法不一样,我们可以考虑使用模板方法来实现。

来看一下UML

template.png

看一下具体代码如何实现

先来定义一个抽象的游戏类Game,里面定义模板方法

public abstract class Game {
    abstract void init();
    abstract void startPlay();
    abstract void endPlay();

    //template method
    public final void play(){
        init();
        startPlay();
        endPlay();
    }
}
复制代码

分别定义表示足球游戏的类Football和表示篮球游戏的类BasketBall;两个类全部继承自抽象类Game

public class Football extends Game {
    @Override
    void init() {
        System.out.println("Football Game init");
    }

    @Override
    void startPlay() {
        System.out.println("Football Game Start");
    }

    @Override
    void endPlay() {
        System.out.println("Football Game End");
    }
}
复制代码

BasketBallFootball类似,因篇幅原因不再列出。

来看一下客户端如何使用

public class TemplatePatternDemo {
    public static void main(String[] args){
        Game basketBall = new BasketBall();
        basketBall.play();

        Game football = new Football();
        football.play();
    }
}
复制代码

总结

模板方法是行为模式之一,模板方法通过把不变的行为搬移到父类,去除子类中的重复代码,使其代码结构更精简。

本文参考 www.tutorialspoint.com/design_patt…

猜你喜欢

转载自juejin.im/post/7088134588869902349
今日推荐