18.策略模式 叁歲伎倆 2022-08-04 14:59 118阅读 0赞 场景: \-某个市场人员接到单后的报价策略,(crm系统中常见问题). 报价策略很复杂,可以简单作如下分类: 普通用户小批量报价 普通客户大批量报价 老客户小批量报价 老客户大批量报价 \-具体选用哪个报价策略,这需要根据实际情况来确定。这时候,我们采用 策略模式即可。 传统可以采用条件语句处理。 假如类型特别多,算法比较复杂,整个条件控制代码会变得很长,难以维护。 策略模式: 对应于解决某一个问题的一个算法族,允许用户从该算法族中认选一个算法族解决 某一个问题,同时可以方便的更换算法或者增加新的算法。并由客户端决定调用哪个 算法。 开发中常见的场景: \-分离算法,选择实现。 ![Center][] 开发中常见的场景: \-javase中gui编程中,布局管理 \-spring框架中,resource接口,资源访问策略 \-javax.servlet.http.HttpServlet\#service() public interface Strategy { public double getPrice(double standardPrice); } /** * 普通客户小批量购买 * @author Administrator * */ public class NewCustomerFewStrategy implements Strategy { @Override public double getPrice(double standardPrice) { System.out.println("普通客户不打折!"); return standardPrice; } } /** * 普通客户大量购买 * @author Administrator * */ public class NewCustomerManyStrategy implements Strategy { @Override public double getPrice(double standardPrice) { System.out.println("普通客户大批量打9折!"); return standardPrice * 0.9; } } /** * 老客户小批量购买 * @author Administrator * */ public class OldCustomerFewStrategy implements Strategy { @Override public double getPrice(double standardPrice) { System.out.println("老客户小批量打9折!"); return standardPrice * 0.9; } } <pre name="code" class="java"> /** * 老客户大批量量购买 * @author Administrator * */ public class OldCustomerManyStrategy implements Strategy { @Override public double getPrice(double standardPrice) { System.out.println("老客户大批量打8.5折!"); return standardPrice * 8.5; } } /** * 负责和具体的策略类交互 * 算法彻底和客户端分离了,使得算法可以独立于客户端,独立的变化 * @author Administrator * */ public class Context { private Strategy strategy; //当前采用的算法 //可以通过构造器来注入 public Context(Strategy strategy) { super(); this.strategy = strategy; } //可以通过set方法注入 public void setStrategy(Strategy strategy) { this.strategy = strategy; } //还可以通过配置文件注入 public void printPrice(double standardPrice) { System.out.println("报价:" + strategy.getPrice(standardPrice)); } } public class Client { public static void main(String[] args) { Strategy s = new OldCustomerManyStrategy(); Context c = new Context(s); c.printPrice(1000.0); } } [Center]: /images/20220731/c972098ae52d4ae7ae94774dcc19259a.png
相关 18.策略模式 场景: \-某个市场人员接到单后的报价策略,(crm系统中常见问题). 报价策略很复杂,可以简单作如下分类: 普通用户小批量报价 普通客户大批量报价 老客户 叁歲伎倆/ 2022年08月04日 14:59/ 0 赞/ 119 阅读
相关 策略模式 前言 1、面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同的属性和功能的对象的抽象集合才是类。 2、简单工厂也能解决问题,但是 港控/mmm°/ 2021年12月08日 16:21/ 0 赞/ 308 阅读
相关 策略模式 用了也不知道用了的典型。 就是接口存在的意义,意图和实现分离。 就好像1+1=2,实现了一个简单加法一样。。。 转载于:https://www.cnblogs.com/l 曾经终败给现在/ 2021年11月27日 06:14/ 0 赞/ 295 阅读
相关 策略模式 策略模式 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式中,我们创建表示各种策略 亦凉/ 2021年09月29日 15:56/ 0 赞/ 283 阅读
相关 策略模式 策略模式(Strategy):定义了一系列算法家族,将每种算法分别封装起来,使得各种算法之间可以互相替换。策略模式可以让算法的变化不影响使用算法的客户,符合开放- 桃扇骨/ 2021年09月22日 23:22/ 0 赞/ 264 阅读
相关 策略模式 13.策略模式 class Program { static void Main(string[] args) 本是古典 何须时尚/ 2021年09月17日 00:00/ 0 赞/ 394 阅读
相关 策略模式 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式中,我们创建表示各种策略的对象和一个行为 忘是亡心i/ 2021年09月16日 23:00/ 0 赞/ 432 阅读
相关 策略模式 策略模式 1. 模式动机 2. 模式定义 3. 模式结构 4. 时序图 5. 代码分析 6. 模式分析 7. 优点 8. 深碍√TFBOYSˉ_/ 2021年08月31日 02:47/ 0 赞/ 531 阅读
相关 策略模式 面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。 策略模式:定义了算法家族,分别封装起来,让它们之间... 灰太狼/ 2020年11月29日 04:23/ 0 赞/ 601 阅读
还没有评论,来说两句吧...