设计模式-策略模式

策略模式的主要角色如下:

  1. 抽象策略(Strategy)类:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。
  2. 具体策略(Concrete Strategy)类:实现了抽象策略定义的接口,提供具体的算法实现或行为。
  3. 环境或上下文(Context)类:是使用算法的角色, 持有一个策略类的引用,最终给客户端调用。

接口Strategy

java 复制代码
package com.cocoa.strategy;

/**
 * 抽象策略类
 **/
public interface Strategy {

    void algorithm();
}

类StrategyA

java 复制代码
package com.cocoa.strategy;

public class StrategyA implements Strategy {

    @Override
    public void algorithm() {
        System.out.println("执行策略A");
    }
}

类StrategyB

java 复制代码
package com.cocoa.strategy;

public class StrategyB implements Strategy {

    @Override
    public void algorithm() {
        System.out.println("执行策略B");
    }
}

类StrategyFactory/Context(策略工厂)

java 复制代码
package com.cocoa.strategy;

/**
 * 环境类
 **/
public class StrategyFactory {

    // 维持一个对抽象策略类的引用
    private Strategy strategy;

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

    // 调用策略类中的算法
    public void algorithm(){
        strategy.algorithm();
    }
}

测试类Main

java 复制代码
package com.cocoa.strategy;

public class Main {
    public static void main(String[] args) {
        Strategy strategyA  = new StrategyA();
        StrategyFactory context = new StrategyFactory(strategyA); //可以在运行时指定类型,通过配置文件 + 反射机制实现

        context.algorithm();// 执行相应策略
    }
}
相关推荐
Tutankaaa14 分钟前
从10队到50队:知识竞赛软件的高并发场景如何设计?
java·经验分享·后端·spring
下次再写26 分钟前
微服务架构实战:Spring Boot + Spring Cloud 从入门到精通
java·spring boot·spring cloud·微服务架构·服务注册与发现·分布式系统·api网关
bang冰冰31 分钟前
Trae工具安装和使用教程(新手零基础入门,全程无坑)
java·人工智能·python
阿丰资源33 分钟前
基于Spring Boot的网上摄影工作室系统(源码一键运行)
java·spring boot·后端
阿维的博客日记43 分钟前
容器是怎么管理 Bean 的?
java·bean
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题】【Java基础篇】第40题:Java中的深拷贝和浅拷贝有什么区别
java·开发语言·后端·面试
@小匠1 小时前
云之家表单数据解析 skills (yzj-form-parser)
java
云烟成雨TD1 小时前
Spring AI Alibaba 1.x 系列【48】状态图编译配置类:CompileConfig 源码解析
java·人工智能·spring
贫民窟的勇敢爷们2 小时前
Java 与 Python 如何选型与融合
java·开发语言·python
小宇的天下2 小时前
Calibre DESIGNrev 单元(Cell)操作核心指南
java·前端·javascript