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

做网站的品牌公司有哪些安康市110报警平台

做网站的品牌公司有哪些,安康市110报警平台,买一个域名多少钱,秦皇岛市妇幼保健院定义 策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,并将每个算法封装起来,使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户端,从而提高代码的可维护性和可扩展性。 …

定义

策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,并将每个算法封装起来,使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户端,从而提高代码的可维护性和可扩展性。

核心概念

策略接口(Strategy):定义所有具体策略必须实现的公共方法。
具体策略(Concrete Strategies):实现策略接口的具体算法。
上下文(Context):持有一个策略接口的引用,负责根据需要选择或切换策略。

JS实现(表单验证示例)

// 策略对象(验证器集合)
const Validators = {required: (value) => !value && value !== 0 ? '不能为空' : null,minLength: (value, min) => value.length < min ? `长度不能少于${min}` : null,email: (value) => !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value) ? '格式不正确' : null,
};// 上下文(验证器)
class Validator {constructor() {this.rules = {};}// 添加验证规则addRule(field, validatorName, ...params) {if (!this.rules[field]) this.rules[field] = [];this.rules[field].push({ validatorName, params });return this; // 链式调用}// 执行验证validate(formData) {const errors = {};for (const field in this.rules) {for (const rule of this.rules[field]) {const { validatorName, params } = rule;const value = formData[field];const errorMessage = Validators[validatorName](value, ...params);if (errorMessage) {errors[field] = errorMessage;break; // 只记录第一个错误}}}return errors;}
}// 使用示例
const validator = new Validator().addRule('username', 'required').addRule('password', 'required').addRule('password', 'minLength', 6).addRule('email', 'required').addRule('email', 'email');const formData = {username: '',password: '123',email: 'invalid-email'
};
// 输出: { username: '不能为空', password: '长度不能少于6位', email: '格式不正确'} 
console.log(validator.validate(formData));

Java实现

// 策略模式:用多态替代 if else
// 1. 策略接口
interface DiscountStrategy { double calculate(double price); }// 2. 具体策略(每个分支对应一个类)
class NormalDiscount implements DiscountStrategy {@Override public double calculate(double price) { return price; }
}
class MemberDiscount implements DiscountStrategy {@Override public double calculate(double price) { return price * 0.9; }
}
class HolidayDiscount implements DiscountStrategy {@Override public double calculate(double price) { return price * 0.8; }
}// 3. 上下文(通过策略实例动态选择行为,无 if else)
class DiscountContext {private DiscountStrategy strategy;public DiscountContext(DiscountStrategy strategy) { this.strategy = strategy; }public double calculateTotal(double price) { return strategy.calculate(price); }
}// 使用时直接选择策略,无需判断
public class Main {public static void main(String[] args) {DiscountContext context = new DiscountContext(new MemberDiscount());System.out.println(context.calculateTotal(100)); // 90.0(无 if else)}
}
http://www.dtcms.com/a/500019.html

相关文章:

  • 三水住房和城乡建设局的网站一键生成logo免费图
  • 自用EUBIU
  • 省住房城乡建设厅网站保险查询平台
  • 智能PDU在数据中心场景中的应用与解决方案
  • 网站登录界面图片用什么软件做深圳关键词优化报价
  • 中信建设证券官方网站佛山网页设计怎么做
  • Tomcat 类加载器隔离机制的实际应用
  • 咨询网站 模板国泰君安官方网站建设集团
  • Go基础知识(一)
  • 网站开发c外贸企业邮箱哪个好用
  • 鸿蒙Next振动开发指南:打造沉浸式触觉反馈体验
  • 网站美工外包公司改号宝网站搭建
  • h5游戏免费下载:滑雪大挑战
  • 高端制作网站哪家专业湖北建设工程注册中心网站
  • 包管理 pip ,conda;pycharm中使用conda 创建的虚拟环境
  • wordpress 域名使用网站内容优化细节
  • K8s Ingress 详解与部署实战
  • 一般网站开发的硬件要求使用flash做网站
  • 制作网站开发wordpress彻底禁用google
  • tauri + rust的环境搭建---初始化以及构建
  • 哪个网站可以做制图兼职嘉兴企业网站制作
  • 3.2队列
  • Particles Color and Depth Textures
  • 关键词搜不到我的网站竞价排名点击
  • Kolmogorov-Smirnov检验:从理论到实践的全解读
  • 怎么用wordpress建电商网站吗wordpress钩子函数
  • 临沂免费做网站网站服务器要求
  • 【STM32F1标准库】代码——SPI通信
  • 丽水品牌网站设计做网站商家
  • 如何使用若依解决多选字段的问题——方案一