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

深圳建站公司告诉你十个建站步骤公司网站制作公司

深圳建站公司告诉你十个建站步骤,公司网站制作公司,wordpress引用轮播图文件,网页设计素材和制作教程它允许在运行时根据需要选择算法的行为。该模式通过将算法封装成独立的类,使得它们可以相互替换,而不影响使用算法的客户端代码。 策略模式主要包含以下角色: 环境(Context):环境对象持有一个策略对象的引…

它允许在运行时根据需要选择算法的行为。该模式通过将算法封装成独立的类,使得它们可以相互替换,而不影响使用算法的客户端代码。

策略模式主要包含以下角色:

  1. 环境(Context):环境对象持有一个策略对象的引用,它提供了一个接口用于执行具体的算法。
  2. 抽象策略(Strategy):定义了策略类的统一接口,用于约束具体策略类的行为。
  3. 具体策略(Concrete Strategy):实现了抽象策略定义的接口,具体实现算法逻辑。

下面以一个简单的支付系统为例来说明策略模式的应用:

// 抽象策略类
public interface PaymentStrategy {void pay(double amount);
}// 具体策略类
public class AliPayStrategy implements PaymentStrategy {public void pay(double amount) {System.out.println("使用支付宝支付:" + amount + "元");// 具体的支付逻辑}
}public class WeChatPayStrategy implements PaymentStrategy {public void pay(double amount) {System.out.println("使用微信支付:" + amount + "元");// 具体的支付逻辑}
}// 环境类
@Data
@NoArgsConstructor
public class PaymentContext {private PaymentStrategy strategy;public void pay(double amount) {strategy.pay(amount);}
}

在上述示例中,我们定义了一个抽象策略类PaymentStrategy,并有两个具体的策略类AliPayStrategyWeChatPayStrategy分别实现了支付宝支付和微信支付的具体逻辑。

环境类PaymentContext持有一个策略对象的引用,并提供了设置策略和支付方法。客户端通过设置不同的策略对象来实现不同的支付方式。这样,客户端代码与具体的支付算法解耦,可以动态地在运行时切换支付策略。

下面是使用策略模式实现的客户端代码:

javaCopy Codepublic class Client {public static void main(String[] args) {PaymentContext context = new PaymentContext();// 使用支付宝支付PaymentStrategy aliPayStrategy = new AliPayStrategy();context.setPaymentStrategy(aliPayStrategy);context.pay(100.0);// 使用微信支付PaymentStrategy weChatPayStrategy = new WeChatPayStrategy();context.setPaymentStrategy(weChatPayStrategy);context.pay(200.0);}
}

运行上述客户端代码,输出如下:

Copy Code 使用支付宝支付:100.0 元
使用微信支付:200.0 元

通过策略模式,我们可以轻松地在运行时切换不同的支付方式,而不需要改动客户端代码。策略模式将算法的选择和使用进行了解耦,提高了代码的灵活性和可维护性。同时,策略模式也符合开闭原则,当需要新增一种支付方式时,只需要添加新的具体策略类即可,无需修改原有代码逻辑。

public class Client {public static void main(String[] args) {double price = 100.0;String type = "normal";double discount = 1.0;// 根据商品类型设置折扣率if (type.equals("vip")) {discount = 0.9;} else if (type.equals("member")) {discount = 0.95;} else if (type.equals("promotion")) {discount = 0.8;}double actualPrice = price * discount;System.out.println("商品的实际价格为:" + actualPrice);}
}

上述代码中,我们根据商品类型手动设置相应的折扣率,然后计算实际价格。这样的代码虽然简单,但存在以下问题:

  1. 客户端代码与具体的折扣算法高度耦合,如果需要更改算法,例如新增一种商品类型,就需要修改客户端代码,这会导致代码的可维护性变差。
  2. 没有遵循开闭原则,当需要新增一种商品类型时,就需要修改原有代码逻辑,这样会影响到其他代码的稳定性。

因此,采用策略模式能更好地解决这些问题,实现代码的松耦合和可维护性。

public class CeLue {public static void main(String[] args) {double price = 100.0;String type = "vip";PayStrategy conType = getPayStrategy(type);PayContext payContext = new PayContext(conType);payContext.pay(price);}private static PayStrategy getPayStrategy(String type) {switch (type) {case "vip":return new VipType();default:return new NormalType();}}
}interface PayStrategy {void pay(double amount);
}class NormalType implements PayStrategy {@Overridepublic void pay(double amount) {System.out.println("普通支付" + amount + "元");}
}class VipType implements PayStrategy {@Overridepublic void pay(double amount) {System.out.println("vip支付" + amount * 0.9 + "元");}
}class PayContext {private PayStrategy payStrategy;public PayContext(PayStrategy payStrategy) {this.payStrategy = payStrategy;}public void pay(double amount) {payStrategy.pay(amount);}}
http://www.sczhlp.com/news/103242/

相关文章:

  • 国内优秀的响应式网站购物网站成功案例
  • 什么专业会制作网站网站建设网上接单
  • 企业营销网站开发建设专家宝石汇网站
  • 网站模板受法律版权保护吗贺兰县住房和城乡建设局网站
  • 400小时大规模南昌方言数据集助力方言保护、AI语音识别技术开发与文化传承研究,覆盖多样化场景与说话者,专业采集高质量音频与文本标注,支持深度学习、语音模型训练、方言教学工具及本地化智能语音交互应用
  • 350+张高清晰度冲积土、黑土、煤渣土、红土四类土壤类型图像资源 ,专为计算机视觉算法训练与地球科学研究设计,支持精准农业土壤识别、地质勘探辅助分析及环境监测应用,提升土壤分类模型准确性
  • 200 万份脑部 MRI 扫描 + 放射科报告数据集:DICOM 格式高分辨率影像,覆盖 50+ 脑部病理(脑肿瘤、神经退行性疾病、多发性硬化症等),支持 AI 病理识别 _ 分类 _ 分割
  • 30万份行业报告数据集:覆盖金融科技医疗能源等20+行业领域,2010-2024年完整时间跨度,提供高质量PDF和文本格式,支持深度学习模型训练、行业趋势分析、市场竞争研究、学术论文写作的多场景应用
  • 23,463张无人机和卫星图像高质量标注,覆盖20个类别包括港口船舶车辆飞机,支持YOLO和VOC格式,专为深度学习目标检测算法优化,训练集验证集均衡划分提升模型鲁棒性,填补小目标检测数据空白
  • 网站创作深圳市哪些公司做网站好
  • 手机设计图纸软件自动化优化系统网站建设
  • 如何在网上建设一个公司网站有关做美食的网站乐
  • 深圳定做网站wordpress子主题修改
  • 建设一个网站的步骤有哪些易企秀h5制作官网
  • 企业网站代码模板无货源网店怎么开
  • 阶跃星辰开源Step-Video-T2V模型:300亿参数打造高保真视频生成新标杆
  • 多多报销小程序系统详解
  • 第0章 矿卡EBAZ4203爆改zynq开发板介绍和VIVADO的安装
  • 德创恋爱话术宝典介绍
  • SUPERW上海网站建设工作室什么是网络营销代理
  • 官网网站建设企业wordpress支持国内视频的编辑器
  • 重庆网站建设重庆最加科技建设网站需要那几部
  • 青岛网站建设青岛个人养老保险计算器
  • 网站建设公司内部情况安卓系统app开发
  • 网站建设企业公司推荐wordpress能否解析万网的域名
  • 机器学习回顾(二)——KNN算法 - 教程
  • 利用langchain创建信息检索链对话应用
  • 不同的.cs文件的命名空间相同
  • MyEMS:开源的力量,如何为企业能源管理带来颠覆性变革?
  • http