当前位置: 首页 > wzjs >正文

想要做一个网站青岛seo招聘

想要做一个网站,青岛seo招聘,网站建设制作费用预算表,中达建设网站策略设计模式 🚩什么是策略设计模式?🚩策略设计模式的特点🚩策略设计模式的结构🚩策略设计模式的优缺点🚩策略设计模式的Java实现🚩代码总结🚩总结 🚩什么是策略设计模式…

策略设计模式

  • 🚩什么是策略设计模式?
  • 🚩策略设计模式的特点
  • 🚩策略设计模式的结构
  • 🚩策略设计模式的优缺点
  • 🚩策略设计模式的Java实现
  • 🚩代码总结
  • 🚩总结

🚩什么是策略设计模式?

策略设计模式(Strategy Pattern) 是一种 行为型设计模式,它定义了一系列算法,并将每个算法封装起来,使它们可以互相替换,且算法的变化不会影响使用算法的客户。策略模式让算法独立于使用它的客户端而变化。

使用场景

  • 当需要在运行时选择不同的算法变体时

  • 当一个类定义了多种行为,并且这些行为以多个条件语句的形式出现时

  • 当需要隔离算法的具体实现与使用算法的客户端时

  • 适用于 支付方式选择排序算法切换折扣计算 等场景

🚩策略设计模式的特点

  • 定义算法族:将相关的算法封装成独立的策略类

  • 运行时切换:可以在运行时动态改变对象使用的算法

  • 消除条件语句避免使用多重条件判断来选择算法

  • 开闭原则:新增策略无需修改已有代码

  • 单一职责:每个策略类只负责一个算法

🚩策略设计模式的结构

策略模式主要包含以下部分:

  • Context(环境类):持有一个策略类的引用,调用具体策略

  • Strategy(抽象策略):定义所有支持的算法的公共接口

  • ConcreteStrategy(具体策略):实现抽象策略定义的算法

图例:

在这里插入图片描述

🚩策略设计模式的优缺点

✅ 优点

  • 算法可自由切换:策略类之间可以自由替换

  • 避免多重条件判断:将算法实现与使用分离

  • 扩展性好:增加新策略无需修改原有代码

  • 符合开闭原则:对扩展开放,对修改关闭

  • 易于单元测试:每个策略可以单独测试

❌ 缺点

  • 策略类数量增多:每个策略都是一个类,可能增加系统复杂度

  • 客户端必须了解所有策略:需要知道不同策略的区别

  • 策略对象可能增加开销:如果策略是无状态的,可以考虑共享

🚩策略设计模式的Java实现

代码地址:GitHub

  • 创建一个公共策略接口,定义公共操作两数操作方法TwoNumberOperation
/*** @author hanson.huang* @version V1.0* @InterfaceName Strategy* @Description 所有策略的公共操作* @date 2025/3/26 10:14**/
public interface Strategy {public void TwoNumberOperation(int a, int b);
}
  • 定义三个具体的策略类,AddStrategySubtractionStrategyMultiplyStrategy

    • AddStrategy两数之和
    /*** @author hanson.huang* @version V1.0* @ClassName AddStrategy* @Description 两数加法策略* @date 2025/3/26 10:33**/
    public class AddStrategy implements Strategy{@Overridepublic void TwoNumberOperation(int a, int b) {System.out.println(a + b);}
    }
    
    • SubtractionStrategy两数之差
    /*** @author hanson.huang* @version V1.0* @ClassName SubtractionStrategy* @Description 两数减法策略* @date 2025/3/26 10:35**/
    public class SubtractionStrategy implements Strategy {@Overridepublic void TwoNumberOperation(int a, int b) {System.out.println(a - b);}
    }
    
    • MultiplyStrategy 两数之积
    /*** @author hanson.huang* @version V1.0* @ClassName MultiplyStrategy* @Description 两数乘法策略* @date 2025/3/26 10:36**/
    public class MultiplyStrategy implements Strategy {@Overridepublic void TwoNumberOperation(int a, int b) {System.out.println(a * b);}
    }
    
  • OperationContext 策略类引用

/*** @author hanson.huang* @version V1.0* @ClassName OperationContext* @Description 策略引用* @date 2025/3/26 10:37**/
public class OperationContext {private Strategy strategy;public OperationContext(Strategy strategy) {this.strategy = strategy;}public void Operation(int a, int b) {strategy.TwoNumberOperation(a, b);}
}

📌 运行结果

在这里插入图片描述

🚩代码总结

  • Strategy 接口定义了所有策略的公共操作

  • AddStrategySubtractionStrategyMultiplyStrategy 是具体策略实现

  • OperationContext 是环境类,持有一个策略引用

  • 客户端可以动态切换不同的策略对象

🚩总结

  • 策略设计模式 定义算法族并封装每个算法,使它们可以互相替换

  • 核心是 将算法与使用算法的客户端解耦,避免使用条件语句

  • 适用于 需要动态切换算法有多种相似行为 的场景

✅ Java源码中的应用场景:

  1. Java集合框架中的Comparator

    • 不同的排序策略可以通过实现Comparator接口来实现
  2. Java线程池的拒绝策略:

    • AbortPolicyCallerRunsPolicy等不同的拒绝策略实现

创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️

在这里插入图片描述

http://www.dtcms.com/wzjs/432479.html

相关文章:

  • 网站举报平台东营百度推广公司
  • .web 建设网站百度信息流推广是什么意思
  • 真正做新闻网站百度贴吧官网入口
  • 自己建网站服务器今日重点新闻
  • seo网站案例广点通和腾讯朋友圈广告区别
  • 可以先做网站后备案吗网络推广公司口碑
  • wordpress首页导航设置深圳龙岗区优化防控措施
  • 菠菜网站怎么做排名网站人多怎么优化
  • 佛山html5网站建设点击器 百度网盘
  • 个人网站做废品回收百度快速排名点击器
  • 如何寻找做网站的客户吸引人的软文
  • 做网站需要工商执照吗上海seo博客
  • qq整人网站怎么做成都自然排名优化
  • 赣州做网站j深圳华强北
  • 网站如何做微信支付江苏seo排名
  • 虚拟主机对网站seo有哪些影响杭州seo排名优化外包
  • 外发加工网接单求职seo服务
  • 杨浦做网站爱站网站seo查询工具
  • 网站建设管理教程视频教程seo网站优化助理
  • 上海包装设计公司百度优化软件
  • 东莞网站建设属于什么专业北海seo快速排名
  • 搜索引擎seo是什么意思北京seo专业团队
  • 适合在家做的电商南宁seo平台标准
  • 网站排名优化是怎么做的百度推广渠道代理
  • 做代购在哪个网站好自己怎么创建网站
  • 织梦网站视频站长工具排名分析
  • 想学做网站可以在哪学杭州seo顾问
  • 中国建设银行网站类型分析广州王牌seo
  • 郑州企业网站优化排名宣传软文范例
  • 做黄色网站被抓了怎么处理seo线下培训课程