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

设计模式—策略模式

时间:2023-12-20 10:58:05浏览次数:25  
标签:策略 num2 int 模式 Strategy Executor 设计模式 public num1

介绍

在策略模式(Strategy Pattern)中一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。

在策略模式定义了一系列算法或策略,并将每个算法封装在独立的类中,使得它们可以互相替换。通过使用策略模式,可以在运行时根据需要选择不同的算法,而不需要修改客户端代码。

代码

策略接口

public interface Strategy {
    public int doOperation(int num1, int num2);
}

策略实现

OperationAdd

public class OperationAdd implements Strategy{
    @Override
    public int doOperation(int num1, int num2) {
        return num1 + num2;
    }
}

OperationMultiply

public class OperationMultiply implements Strategy{
    @Override
    public int doOperation(int num1, int num2) {
        return num1 * num2;
    }
}

OperationSubtract

public class OperationSubtract implements Strategy{
    @Override
    public int doOperation(int num1, int num2) {
        return num1 - num2;
    }
}

测试

编写一个执行者类 Executor,包含策略属性

class Executor {
    private Strategy strategy;

    public Executor(Strategy strategy) {
        this.strategy = strategy;
    }

    public int executeStrategy(int num1, int num2) {
        return strategy.doOperation(num1, num2);
    }
}

编写测试代码,让执行者执行不同的策略

public class StrategyTest {
    @Test
    void test() {
        Executor executor = new Executor(new OperationAdd());
        Assertions.assertEquals(executor.executeStrategy(1, 2), 3);

        executor = new Executor(new OperationSubtract());
        Assertions.assertEquals(executor.executeStrategy(1, 2), -1);

        executor = new Executor(new OperationMultiply());
        Assertions.assertEquals(executor.executeStrategy(1, 2), 2);
    }
}

标签:策略,num2,int,模式,Strategy,Executor,设计模式,public,num1
From: https://www.cnblogs.com/shixuanliu/p/17916009.html

相关文章

  • 工厂模式
    工厂模式最主要解决的问题就是创建者和调用者的耦合,在代码层面是将通过对不同且相近对象(类似华为手机和小米手机)的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......
  • spring boot 配置get方法枚举转换策略
    配置转换器@SuppressWarnings({"rawtypes","unchecked"})publicclassCompositeEnumConverterFactoryimplementsConverterFactory<String,Enum<?>>{ @Override public<TextendsEnum<?>>Converter<String,T>getC......
  • 拼多多ID取商品详情API:电商行业的核心价值与实时数据获取策略
    一、引言在当今的电商行业中,数据是驱动业务决策和优化用户体验的关键因素。拼多多作为中国电商市场的主要参与者,其根据ID取商品详情原数据的API在电商行业中具有显著的重要性。本文将深入探讨这个话题,并介绍如何实现实时数据获取。二、拼多多根据ID取商品详情原数据API的重要性1.提......
  • 10.自动化测试定位策略
    App定位方式 定位策略描述AccessibilityID识别一个唯一的UI元素,对于XCUITest引擎,它对应的的属性名是 accessibility-id,对于Android系统的页面元素,对应的属性名是 content-descClassname对于iOS系统,它的class属性对应的属性值会以XCUIElementType开......