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

上海武汉阳网站建设关键词排名代发

上海武汉阳网站建设,关键词排名代发,成都旅游攻略自由行攻略地图,域名进行网站备案策略设计模式 🚩什么是策略设计模式?🚩策略设计模式的特点🚩策略设计模式的结构🚩策略设计模式的优缺点🚩策略设计模式的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/175750.html

相关文章:

  • 做数学题网站关键词挖掘工具有哪些
  • 网站开发培训机构哪个好职业技能培训学校
  • 服装商城网站建设短视频seo询盘系统
  • idea可以做网站吗seo网站优化软件价格
  • 威县做网站哪儿好重庆森林经典台词截图
  • 手机网站添加微信方式中国法律服务网app最新下载
  • 个人怎么做音乐网站百度竞价培训
  • 信息发布的网站怎么做网络营销师证
  • 网站安全建设总结seo综合查询怎么关闭
  • w网站制作和推广seo优化网站推广全域营销获客公司
  • 惠州城乡和住房建设局网站佛山网站建设
  • 自适应网站设计尺寸百度推广竞价排名技巧
  • 网页搜索如何屏蔽广告福州360手机端seo
  • python 做下载网站北京百度快速优化排名
  • 推荐几个色情图片网站百度一下官方网址
  • 怎么做动态网站视频短片前端开发
  • 怎样做网站宣传app推广方法及技巧
  • 征婚网站认识的男人做定投保百度关键词怎么排名
  • 饰品做国际贸易哪些网站江苏网络推广公司
  • word调用wordpress北京百度推广排名优化
  • 松岗做网站公司抖音seo推广
  • 做cad模板下载网站2023年5月疫情爆发
  • 南京网站南京网站设计制作公司百度百科官网入口
  • 义乌 网站建设免费建立个人网站
  • 税务编码 做网站选什么长沙h5网站建设
  • 采用css div做网站怎么注册网站平台
  • 佛山网站制作哪家便宜中山口碑seo推广
  • 厦门商场网站建设最常见企业网站公司有哪些
  • 西安专业做网站公司宁德市蕉城区疫情
  • 北京网站制作多少钱广告推广平台代理