首页 > 其他分享 >24种设计模式--策略模式(strategy)、模板模式(template)

24种设计模式--策略模式(strategy)、模板模式(template)

时间:2023-01-29 22:00:29浏览次数:48  
标签:24 void 模式 strategy dahan Game 设计模式 com public

@

目录

第一部分:策略模式

灵活的路由、处理不同逻辑。类似路由不同的推荐逻辑。

1.定义接口:Game

package com.dahan.strategy;

/**
 * 大汉软件
 */
public interface Game {
    void play();
}

2.实现Game接口:

2.1 DNF
package com.dahan.strategy.impl;

import com.dahan.strategy.Game;

/**
 * 大汉软件
 */
public class DNF implements Game {
    @Override
    public void play() {
        System.out.println("DNF");
    }
}
2.2 LOL
package com.dahan.strategy.impl;

import com.dahan.strategy.Game;

/**
 * 大汉软件
 */
public class LoL implements Game {
    @Override
    public void play() {
        System.out.println("LOL");
    }
}

3.引用的上下文:

package com.dahan.strategy;

/**
 * 大汉软件
 */
public class StrategyContext {
    public void play(Game game) {
        game.play();
    }
}

4.测试类

package com.dahan.strategy;

import com.dahan.strategy.impl.DNF;
import com.dahan.strategy.impl.LoL;

/**
 * 大汉软件
 */
public class StrategyTest {
    public static void main(String[] args) {
        StrategyContext strategyContext = new StrategyContext();

        // DNF
        Game game = new DNF();
        strategyContext.play(game);

        // LoL
        game = new LoL();
        strategyContext.play(game);
    }
}
4.1测试结果:

DNF

LOL

第二部分:模板模式 复用策略模式的代码

便于继承重写具体业务操作

1.定义钩子(抽象类):

package com.dahan.strategy;

/**
 * 大汉软件
 */
public abstract class QQSpeed {
    public void play() {
        accelerate();
        nitrogenInjection();
        drift();
    }

    protected void accelerate() {
        System.out.println("加速");
    }

    /**
     * 喷氮气
     */
    protected abstract void nitrogenInjection();

    protected void drift() {
        System.out.println("飘移");
    }
}

2.具体实现类:

package com.dahan.strategy.impl;

import com.dahan.strategy.QQSpeed;

/**
 * 大汉软件
 */
public class QQSpeedOption1 extends QQSpeed {
    @Override
    protected void nitrogenInjection() {
        System.out.println("喷氮气1111");
    }
}
package com.dahan.strategy.impl;

import com.dahan.strategy.QQSpeed;

/**
 * 大汉软件
 */
public class QQSpeedOption2 extends QQSpeed {
    @Override
    protected void nitrogenInjection() {
        System.out.println("喷氮气2222");
    }
}

3.测试类:

package com.dahan.strategy.impl;

/**
 * 大汉软件
 */
public class TemplateTest {
    public static void main(String[] args) {
        QQSpeedOption1 qqSpeedOption1 = new QQSpeedOption1();
        qqSpeedOption1.play();
        System.out.println("==========");       
        QQSpeedOption2 qqSpeedOption2 = new QQSpeedOption2();
        qqSpeedOption2.play();
    }
}
3.1测试结果:

加速

喷氮气1111

飘移

============

加速

喷氮气2222

飘移

参考地址

设计模式

标签:24,void,模式,strategy,dahan,Game,设计模式,com,public
From: https://www.cnblogs.com/csh520mjy/p/17073938.html

相关文章

  • 09-建造者模式
    09-建造者模式概念建造者模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示建造者模式主要是用于创建一些复杂的对象,这些对象内部......
  • 算法刷题 Day 24 | 回溯的理论基础 & 77. 组合
    今日内容:理论基础77.组合详细布置理论基础其实在讲解二叉树的时候,就给大家介绍过回溯,这次正式开启回溯算法,大家可以先看视频,对回溯算法有一个整体的了解......
  • Blazor模式讲解
    Blazor的三种模式BlazorServer:BlazorServer在ASP.NETCore应用中支持在服务器上托管Razor组件。可通过SignalR连接处理UI更新。运行时停留在服务器上并处理......
  • Seata源码结构及事务模式介绍
    1.Seata是什么Seata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata将为用户提供了AT、TCC、SAGA和XA事务模式,为用户打造一站式......
  • redis的简易哨兵模式
    某一天突然收到通知说redis的服务器挂了,因为是支付服务用到的redis,所以赶紧去查一下对服务流程有没有影响,结果是一切正常,松了一口气。后面看了一下代码发现里面自己封装的......
  • java常用的设计模式
     java的设计模式一、单例模式  基本概念:保证一个类仅有一个实例,并提供一个访问它的全局访问点。常见写法:  1.饿汉式publicclassSingleton{priva......
  • C++ 设计模式--模板方法Template Method
    1.定义定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类中。TemplateMethod使得子类可以不改变(复用)一个算法的结构即可重定义(override重写)该算法的某......
  • 装饰者模式和代理模式
    代理模式和装饰器模式很像,这里用【到咖啡馆喝咖啡】作例子来讲解。基础实现定义一个咖啡的接口。publicinterfaceCoffee{/***打印当前咖啡里有什么......
  • 【设计模式】行为型
    职责链模式Client->A->B->C,避免请求发送者与接收者耦合,将接收者对象连接成一条链,直到有对象处理命令模式 将请求转换为一个包含与请求相关的所有信息的独立对象。 可......
  • k8s v1.24.1 配置 cephfs
    本地环境情况角色IP版本k8s-master-1172.16.16.108K8Sv1.24.1,containerd://1.6.8k8s-node-1172.16.16.109K8Sv1.24.1,containerd://1.6.8k8s-no......