摘要:定义定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的用户。
定义:定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的用户。
类型:行为型
适用场景:
系统有很多类,而它们的区别仅仅在于它们的行为不同
一个系统需要动态地在几种算法中选择一种
优点:
开闭原则
避免使用多重条件转移语句(if...else...,switch)
提高算法的保密性和安全性
缺点:
客户端必须知道所有的策略类,并自行决定使用哪一个策略类。
产生很多策略类
案例某知识平台的教学视频促销(满减、立减、返现)
促销策略接口
public interface PromotionStrategy { void doPromotion(); }
返现策略
public class FanXianPromotionStrategy implements PromotionStrategy{ @Override public void doPromotion() { System.out.println("返现促销,返回的金额存放到慕课网用户的余额中"); } }
立减策略
public class LiJianPromotionStrategy implements PromotionStrategy { @Override public void doPromotion() { System.out.println("立减促销,课程的价格直接减去配置的价格"); } }
满减策略
public class ManJianPromotionStrategy implements PromotionStrategy{ @Override public void doPromotion() { System.out.println("满减促销,满200-20元"); } }
促销活动
public class PromotionActivity { private PromotionStrategy promotionStrategy; public PromotionActivity(PromotionStrategy promotionStrategy) { this.promotionStrategy = promotionStrategy; } public void executePromotionStrategy(){ promotionStrategy.doPromotion(); } }
public class Test { public static void main(String[] args) { PromotionActivity promotionActivity618 = new PromotionActivity(new LiJianPromotionStrategy()); PromotionActivity promotionActivity1111 = new PromotionActivity(new FanXianPromotionStrategy()); promotionActivity618.executePromotionStrategy(); promotionActivity1111.executePromotionStrategy(); } }
结果:
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/77754.html
摘要:可以使用其他模式来修正这个缺陷,如工厂方法模式代理模式或享元模式。我们的策略模式只是实现了策略的管理,但是没有严格地定义适当的场景使用适当的策略,在实际项目中,一般通过工厂方法模式来实现策略类的声明。源码地址参考文献设计模式之禅 定义 Define a family of algorithms,encapsulate each one,and make them interchange...
摘要:一定义定义维基百科策略模式作爲一種軟件設計模式,指對象有某個行爲,但是在不同的場景中,該行爲有不同的實現算法。二策略模式图我们看看策略模式是有怎样设计结构的。如中创建线程池,线程池任务满时,对提交的任务做处理就使用了策略模式。以前完整的看过《大话设计模式》,虽然完整看过,也做过笔记,但现在依然很多已经很模糊。这段时间趁着离职,有时间,打算重新过一遍,该篇将介绍策略模式。一、定义定义(维基百科...
摘要:孙膑心里一万个草泥马在奔腾,差点没噎死自己滚一边去,我们这盘跟他赛马开始,策略模式上场。在设计模式之禅中的提出通过策略枚举和反射机制对策略模式进行改良,膜拜了但是要添加或淘汰策略,还是得去对枚举进行修改,也不符合开闭原则。 今天给大家说说田忌赛马的故事。如有雷同,纯属巧合!话说在战国时期,群雄割据,硝烟四起,茶余饭后还是少不了娱乐活动的,其中赛马是最火爆的。一天,孙膑看到田忌像个死鸡似...
阅读 2306·2023-04-26 00:28
阅读 3020·2019-08-30 15:55
阅读 2723·2019-08-30 12:47
阅读 1524·2019-08-29 11:04
阅读 3097·2019-08-28 18:14
阅读 927·2019-08-28 18:11
阅读 1652·2019-08-26 18:36
阅读 3364·2019-08-23 18:21