当前位置: 首页> 房产> 建材 > 沈阳媒体_建筑工程网校排行榜_免费发广告的网站大全_苏州百度推广服务中心

沈阳媒体_建筑工程网校排行榜_免费发广告的网站大全_苏州百度推广服务中心

时间:2025/7/9 12:04:11来源:https://blog.csdn.net/qq_73270720/article/details/145006492 浏览次数:2次
沈阳媒体_建筑工程网校排行榜_免费发广告的网站大全_苏州百度推广服务中心

定义一组算法,将每个算法封装成一个独立的类,并使它们可以互相替换。策略模式使得算法的变化不会影响到使用算法的客户。
在这里插入图片描述

const priceProcessor = {pre(originPrice) {if (originPrice >= 100) {return originPrice - 20;}return originPrice * 0.9;},onSale(originPrice) {if (originPrice >= 100) {return originPrice - 30;}return originPrice * 0.8;},back(originPrice) {if (originPrice >= 200) {return originPrice - 50;}return originPrice;},fresh(originPrice) {return originPrice * 0.5;},};// 询价函数function askPrice(tag, originPrice) {return priceProcessor[tag](originPrice)}
// 定义策略接口class Strategy {constructor() {if (this.constructor === Strategy) {throw new Error('不能实例化抽象类');}}// 定义算法方法algorithm() {throw new Error('必须实现 algorithm 方法');}}// 具体策略类 Aclass ConcreteStrategyA extends Strategy {constructor() {super();}// 实现算法方法algorithm() {console.log('执行具体策略 A 的算法');}}// 具体策略类 Bclass ConcreteStrategyB extends Strategy {constructor() {super();}// 实现算法方法algorithm() {console.log('执行具体策略 B 的算法');}}// 上下文类class Context {constructor(strategy) {this.strategy = strategy;}// 执行算法方法executeAlgorithm() {this.strategy.algorithm();}}// 使用策略模式let context = new Context(new ConcreteStrategyA());context.executeAlgorithm();context = new Context(new ConcreteStrategyB());context.executeAlgorithm();
关键字:沈阳媒体_建筑工程网校排行榜_免费发广告的网站大全_苏州百度推广服务中心

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: