我是靠谱客的博主 苗条巨人,最近开发中收集的这篇文章主要介绍Java模板模式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

模板模式

模板模式的 UML 图

在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。

抽象类实现模板模式

public abstract class Game {
    abstract void init();

    abstract void startPlay();

    abstract void endPlay();

    public final void play() {
        init();
        startPlay();
        endPlay();
    }
}

子类1

public class WGame extends Game {
    @Override
    void init() {
        System.out.println("开机");
    }
    @Override
    void startPlay() {
        System.out.println("开始游戏WGame");
    }
    @Override
    void endPlay() {
        System.out.println("结束游戏");
    }
}

子类2

public class FGame extends Game {
    @Override
    void init() {
        System.out.println("开机");
    }
    @Override
    void startPlay() {
        System.out.println("开始游戏FGame");
    }
    @Override
    void endPlay() {
        System.out.println("结束游戏");
    }
}

测试:

public class Main {
    public static void main(String[] args) {
        Game game=new WGame();
        game.play();
        FGame fGame=new FGame();
        fGame.play();
    }
}

结果:

开机
开始游戏WGame
结束游戏
开机
开始游戏FGame
结束游戏

接口实现模板模式:

public interface Car {
    void a();
    void b();
    void c();
    //默认方法jdk1.8
    default void run(){
        a();
        b();
        c();
    }
}
public class BigCar implements Car {
    @Override
    public void a() {
        System.out.println("a");
    }
    @Override
    public void b() {
        System.out.println("b");
    }
    @Override
    public void c() {
        System.out.println("c");
    }
}

public class Test {
    public static void main(String[] args) {
        Car car=new BigCar();
        car.run();
    }
}

最后

以上就是苗条巨人为你收集整理的Java模板模式的全部内容,希望文章能够帮你解决Java模板模式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(106)

评论列表共有 0 条评论

立即
投稿
返回
顶部