首页 > 其他分享 >设计模式—模板模式

设计模式—模板模式

时间:2023-12-20 11:23:52浏览次数:23  
标签:Cricket void System 模式 Override println 设计模式 模板 out

介绍

代码

游戏模板类

定义一个游戏模板虚类 Game,抽象并规范好游戏的进行流程

public abstract class Game {
    abstract void init();

    abstract void startPlay();

    abstract void endPlay();

    // 模板
    public final void play(){
        // 初始化
        init();

        // 开始
        startPlay();

        // 结束
        endPlay();
    }
}

实体类

建立实体类 Cricket

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

    @Override
    void startPlay() {
        System.out.println("Cricket start");
    }

    @Override
    void endPlay() {
        System.out.println("Cricket end");
    }
}

建立实体类 Football

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

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

    @Override
    void endPlay() {
        System.out.println("Football end");
    }
}

测试

public class TemplateTest {
    @Test
    void test(){
        Game game = new Cricket();
        game.play();
        System.out.println("------------------");

        game = new Football();
        game.play();
    }
}

标签:Cricket,void,System,模式,Override,println,设计模式,模板,out
From: https://www.cnblogs.com/shixuanliu/p/17916092.html

相关文章

  • 设计模式—策略模式
    介绍在策略模式(StrategyPattern)中一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式定义了一系列算法或策略,并将每个算法封装在独立的类中,使得它们可以互相替换。通过使用策略模式,可以在运行时根据需要选择不同的算法,而不需要修改客户端代......
  • vue中@param 常用注释模板
    /***获取事件在列表中的位置*@paramcontext*@paramcallback*@private*/_evIndex(event,context,callback){letindex=-1;for(leti=0;i<=event.length;i++){if(event[i].context===contex&&event[i].callback===callback){......
  • 工厂模式
    工厂模式最主要解决的问题就是创建者和调用者的耦合,在代码层面是将通过对不同且相近对象(类似华为手机和小米手机)的new创建方式,统一起来。1.简单工厂模式  由phone作为两手机的统一接口,使得factory直接返回phone即可,无需考虑xiaomi与meizu的返回不兼容问题,而factory能够帮......
  • 设计模式的关系
    泛化关系泛化关系用一条带空心箭头的直接表示,可以理解为继承eg:汽车是基类,而suv这辆车就是他的子类实现关系实现关系用一条带空心箭头的虚线表示;eg:将车作为一个接口类(模糊概念,比如跑的挺快),下边的小汽车或是自行车都是车这个模糊概念的实现 聚合关系聚合关系用一条带空......
  • 创建型设计模式-原型模式
    原型设计模式是一种对象创建型模式,它通过复制现有对象来创建新的对象,而无需显式地调用构造函数。简单来说,原型设计模式就是通过克隆已有对象来创建新对象。举一个通俗易懂的例子,假设我们有一个图形库,其中有一个基类Shape表示图形,它有一个纯虚函数draw()用于绘制图形。现在我们......
  • 代理模式理解
    代理模式其实称为网关模式就很好理解,即代理就是那个网关,它只是会额外的做一些操作(比如日志记录,拦截等),然后原封不动的将参赛调用被代理对象,然后再将被代理对象(各方法)执行后拿到的结果返回给调用放;即中间多了一个代理层(网关);网关需要配置被代理服务的地址,同样的代理对象需要配置被......
  • 深入 K8s 网络原理(一)- Flannel VXLAN 模式分析
    目录1.概述2.TL;DR3.Pod间通信问题的由来4.测试环境准备5.从veth设备聊起6.网桥cni06.1在Pod内看网卡信息6.2在host上看网卡信息7.VTEPflannel.18.最后看下Flannel的配置9.总结1.概述这周集中聊下K8s的集群网络原理,我初步考虑分成3个方向:Pod-to-Pod......
  • 用闭包写个单例模式
    DN对闭包的定义是:闭包是指那些能够访问自由变量的函数,自由变量是指在函数中使用的,但既不是函数参数又不是函数的局部变量的变量,由此可以看出,闭包=函数+函数能够访问的自由变量,所以从技术的角度讲,所有JS函数都是闭包,但是这是理论上的闭包,还有一个实践角度上的闭包,从实践角度上来......
  • 异步记录第三方接口调用日志的优雅实现(HttpClient+装饰者模式+异步线程池)
    对于第三方接口调用日志这个功能,笔者在工作中曾见过以下两种方式:Restemplate+装饰者模式+MQ实现网关监控+Feign拦截器+观察者模式实现其中观察者模式的实现是我最为佩服的设计,个人认为以上两种实现都显得略过臃肿,应该简化设计,让异步记录的实现更加简洁优雅,因此产生了这样......
  • 设计模式的七大原则
    目的:使程序高内聚、低耦合、高重用、高灵活,可维护性好,可扩展性高。设计模式的三种类型:创建型:单例、工厂、抽象工厂、原型、建造者结构型:适配器、桥接、装饰、组合、外观、享元、代理行为型:模板法、命令、访问者、迭代器、观察者、中介者、备忘录、解释器、状态、策略、责任链......