首页 > 其他分享 >模板模式

模板模式

时间:2023-06-25 15:56:52浏览次数:33  
标签:斗地主 void System 模式 Override println 模板 out

模板模式

在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。

它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。

这种类型的设计模式属于行为型模式

适用场景:一些固定化流程,比如JdbcTemplate.

思考问题:为什么用抽象类而不用接口呢?

模板模式小例子:

  • 模板抽象类
/**
 * 抽象模板类
 *
 * @author admin
 */
public abstract class AbstractPlayGameTemplate {
    // 游戏初始化
    abstract void init();

    // 登录账号
    abstract void login();

    //退出登录
    abstract void loginOut();

    // 退出游戏
    abstract void exit();

    public void play() {
        init();
        login();
        System.out.println("开始玩游戏");
        loginOut();
        exit();
    }
}
  • 继承抽象类例子1
/**
 * 玩王者荣耀
 *
 * @author admin
 */
public class GloryOfKingsPlay extends AbstractPlayGameTemplate {
    @Override
    void init() {
        System.out.println("初始化王者荣耀");
    }

    @Override
    void login() {
        System.out.println("登录化王者荣耀账户");
    }

    @Override
    void loginOut() {
        System.out.println("退出化王者荣耀账户");
    }

    @Override
    void exit() {
        System.out.println("结束王者荣耀");
    }
}
  • 继承抽象类例子2
/**
 * 玩斗地主
 *
 * @author admin
 */
public class DoudizuPlay extends AbstractPlayGameTemplate {
    @Override
    void init() {
        System.out.println("初始化斗地主游戏");
    }

    @Override
    void login() {
        System.out.println("登录化斗地主账户");
    }

    @Override
    void loginOut() {
        System.out.println("退出斗地主账户");
    }

    @Override
    void exit() {
        System.out.println("结束斗地主游戏");
    }
}
  • 客户端
/**
 * 客户端
 *
 * @author admin
 */
public class Client {
    public static void main(String[] args) {
        new GloryOfKingsPlay().play();
        System.out.println("\r\n");
        new DoudizuPlay().play();
    }
}
  • 输出

初始化王者荣耀
登录化王者荣耀账户
开始玩游戏
退出化王者荣耀账户
结束王者荣耀

初始化斗地主游戏
登录化斗地主账户
开始玩游戏
退出斗地主账户
结束斗地主游戏

标签:斗地主,void,System,模式,Override,println,模板,out
From: https://www.cnblogs.com/kouhao/p/17503108.html

相关文章

  • 责任链模式
    责任链模式责任链模式(ChainofResponsibilityPattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。使用登录例子:成员定义packageorg.kouhao.design.patterns.责任链模式;/***@auth......
  • 我的Pwn模板
    使用说明:确保下载好tmux后,使用tmux命令进入tmux终端根据ELF文件位数选择contextelfFile添加ELF文件路径remoteIp添加远程连接的IPremotePort添加远程连接的PortlibFile添加本地库REMOTE表示远程连接,1开启,0关闭DEBUG表示使用本地调试,1开启,0关闭BREAK表示调试初始化后使用......
  • VMware中切换命令行和桌面模式
    在虚拟机中,一般通过以下步骤来切换命令行和桌面模式:进入虚拟机中的操作系统。按下Ctrl+Alt+F1键,在虚拟机中切换到命令行模式。输入用户名和密码,登录到命令行模式下的操作系统。在命令行中执行需要的操作,例如安装软件、配置网络等。当需要返回到桌面模式时,可以按下Ctrl+Alt+F......
  • WPF入门教程系列二十九 ——DataGrid使用示例MVVM模式(7)
    WPF入门教程系列目录WPF入门教程系列二——Application介绍WPF入门教程系列三——Application介绍(续)WPF入门教程系列四——Dispatcher介绍WPF入门教程系列五——Window介绍WPF入门教程系列十一——依赖属性(一)WPF入门教程系列十五——WPF中的数据绑定(一) 接上文WPF......
  • 委托及观察者模式
    委托委托(delegate)是一种特殊的类型(class),它可以被认为是一个可以拥有函数引用的类,它的声明规定了它能够持有的函数引用的函数形式,同时它可以存储多个函数引用,并通过自己的方法调用所有注册在它身上的方法(发布者)。理解了观察者模式就理解了委托它的特点在于:委托类型的定义方......
  • vue项目本地启动history路由模式刷新页面404
    背景:之前一直用hash模式,改成history模式后刷新页面404解决:vue.config.js中publicPath:"/"如果是线上服务则还需要后端修改一些配置,见链接点击查看......
  • 前端ajax调用后端下载Excel模板流,解决输出乱码等问题
    functionimportTemplate(){$.ajax({url:"/importTemplate",type:"get",success:function(data){letdownloadUrl="../importTemplate"//创建a标签letlabel=$("......
  • 大端模式与小端模式简介
    转载文章:《数据在内存中存储的方式:大端模式与小端模式》什么是大端模式,什么是小端模式?所谓的大端模式(Big-endian),是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低......
  • JavaScript中最好的明暗模式主题切换
    了解如何使用JavaScript、CSS自定义属性、本地存储和系统设置为您的网站构建终极主题Toggle™️。无需框架!我曾经不同意浅色和深色模式切换。“切换开关是用户系统偏好设置!”我会天真地感叹,选择让prefers-color-schemeCSS媒体查询控制我个人网站上的主题。没有切换。没有选择......
  • Ubuntu开机默认进入命令行模式/用户图形界面(转)
    一、开机默认进入命令行模式  #输入命令: sudosystemctlset-defaultmulti-user.target #重启: reboot 要进入图形界面,只需要输入命令startx从图形界面切换回命令行:ctrl+alt+F7 二、开机默认进入图形用户界面  #输入命令: ......