设计模式学习

本文详细介绍了策略模式的使用场景和Java实现步骤,包括定义策略接口、上下文类以及如何根据不同游戏(如LOL和Pubg)动态切换策略。展示了如何通过策略模式在运行时灵活切换算法,保持客户端代码简洁.

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设计模式学习

策略模式

策略模式适用于以下场景:

  1. 对象有多种行为或算法,需要根据不同情况选择不同的算法。
  2. 系统中有多个类实现相同的接口或继承相同的抽象类,但具体实现不同。
  3. 需要在运行时动态地添加、删除或切换算法,而不影响客户端代码。
  4. 一个类有多种变形或状态,每个状态有不同的行为,需要根据状态动态改变对象的行为。

第一步:定义策略接口

/**
 * 打游戏策略接口
 * 策略接口定义行为
 * @author wangpeng
 * @ClassName PlayGameStategy
 * @description
 * @date 2024/4/24 16:39
 */
public interface PlayGameStategy {
	/**
     * 打游戏
     * @return
     */
    String playGame();
}

第二步:定义上下文类

/**
 * 上下文
 * @author wangpeng
 * @ClassName PlayGameContext
 * @date 2024/4/24 16:40
 */

public class PlayGameContext {
    private PlayGameStategy playGameStategy;

    public PlayGameContext(PlayGameStategy playGameStategy) {
        this.playGameStategy = playGameStategy;
    }

    public String playGame() {
        return playGameStategy.playGame();
    }

}

第三步:创建要打的游戏类,LOL、Pubg

/**
 * @author wangpeng
 * @ClassName Pubg
 * @description TODO
 * @date 2024/4/24 16:43
 */

public class Lol implements PlayGameStategy {


    @Override
    public String playGame() {
        return "LoL启动!";
    }
}

/**
 * @author wangpeng
 * @ClassName Pubg
 * @description TODO
 * @date 2024/4/24 16:43
 */

public class Pubg implements PlayGameStategy {
    @Override
    public String playGame() {
        return "pubg启动!";
    }
}

第四步:调用

/**
 * @author wangpeng
 * @ClassName TestController
 * @description TODO
 * @date 2024/4/24 16:44
 */
@RestController
@RequestMapping("/test")
public class FuckController {



    @GetMapping("/pubg")
    @Anonymous
    public String playPubg(String game) {
        Pubg pubg = new Pubg();
        PlayGameContext playGameContext = new PlayGameContext(pubg);
        return  playGameContext.playGame();
    }

    @GetMapping("/lol")
    @Anonymous
    public String playLoL(String game) {
        Lol lol = new Lol();
        PlayGameContext playGameContext = new PlayGameContext(lol);
        return playGameContext.playGame();
    }
}

最后效果
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值