摘要:描述某项业务需要根据不同的要求算法计算结果,这些要求之间彼此独立。场景实现一个计算器,要有加减乘除法则,这些法则就是不同的算法,计算器仅需根据法则的标记计算结果。实现抽象算法接口定义加法定义减法定义一个计算器启动计算器
描述:某项业务需要根据不同的要求(算法)计算结果,这些要求之间彼此独立。
场景:实现一个计算器,要有加减乘除法则,这些法则就是不同的算法,计算器仅需根据法则的标记计算结果。
实现:
抽象算法接口
interface Strategy { void calc(int a, int b); }
定义加法
class Add implements Strategy { @Override public void calc(int a, int b) { System.out.println(String.format("%d + %d = %d", a, b, (a + b))); } }
定义减法
class Sub implements Strategy { @Override public void calc(int a, int b) { System.out.println(String.format("%d - %d = %d", a, b, (a - b))); } }
定义一个计算器
class Calculator { static Mapstrategys = new HashMap (); static { strategys.put("+", new Add()); strategys.put("-", new Sub()); } static void calc(int a, String flag, int b) { Strategy strategy = strategys.get(flag); strategy.calc(a, b); } }
启动计算器
public class StrategyDemo { public static void main(String[] args) { Calculator.calc(4, "-", 6);// =-2 Calculator.calc(4, "+", 6);// =10 } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/64010.html
摘要:可以使用其他模式来修正这个缺陷,如工厂方法模式代理模式或享元模式。我们的策略模式只是实现了策略的管理,但是没有严格地定义适当的场景使用适当的策略,在实际项目中,一般通过工厂方法模式来实现策略类的声明。源码地址参考文献设计模式之禅 定义 Define a family of algorithms,encapsulate each one,and make them interchange...
摘要:一定义定义维基百科策略模式作爲一種軟件設計模式,指對象有某個行爲,但是在不同的場景中,該行爲有不同的實現算法。二策略模式图我们看看策略模式是有怎样设计结构的。如中创建线程池,线程池任务满时,对提交的任务做处理就使用了策略模式。以前完整的看过《大话设计模式》,虽然完整看过,也做过笔记,但现在依然很多已经很模糊。这段时间趁着离职,有时间,打算重新过一遍,该篇将介绍策略模式。一、定义定义(维基百科...
摘要:孙膑心里一万个草泥马在奔腾,差点没噎死自己滚一边去,我们这盘跟他赛马开始,策略模式上场。在设计模式之禅中的提出通过策略枚举和反射机制对策略模式进行改良,膜拜了但是要添加或淘汰策略,还是得去对枚举进行修改,也不符合开闭原则。 今天给大家说说田忌赛马的故事。如有雷同,纯属巧合!话说在战国时期,群雄割据,硝烟四起,茶余饭后还是少不了娱乐活动的,其中赛马是最火爆的。一天,孙膑看到田忌像个死鸡似...
阅读 1692·2021-11-22 15:33
阅读 1954·2021-10-08 10:04
阅读 3521·2021-08-27 13:12
阅读 3367·2019-08-30 13:06
阅读 1440·2019-08-29 16:43
阅读 1362·2019-08-29 16:40
阅读 694·2019-08-29 16:15
阅读 2726·2019-08-29 14:13