18.策略模式 叁歲伎倆 2022-08-04 14:59 90阅读 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 赞/ 91 阅读
相关 策略模式 package A\_Strategy; /\\ \ 策略模式 定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户 \ 优点: 深藏阁楼爱情的钟/ 2022年07月12日 12:17/ 0 赞/ 151 阅读
相关 策略模式 1.策略模式概述 在策略模式中,我们可以定义一些独立的类来封装不同的算法,每一个类封装一种具体的算法,在这里,每一个封装算法的类我们都可以称之为一种策略(Strategy 缺乏、安全感/ 2022年06月18日 05:18/ 0 赞/ 166 阅读
相关 策略模式 前言 1、面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同的属性和功能的对象的抽象集合才是类。 2、简单工厂也能解决问题,但是 港控/mmm°/ 2021年12月08日 16:21/ 0 赞/ 250 阅读
相关 策略模式 一、模式定义: 大话设计模式中程杰老师给出的定义是这样的:策略模式(Strategy),定义了算法家族,分别封装起来,让它们之间可以互相替换,从模式让算法的变化不会影响到使用 Myth丶恋晨/ 2021年09月26日 15:28/ 0 赞/ 274 阅读
相关 策略模式 13.策略模式 class Program { static void Main(string[] args) 本是古典 何须时尚/ 2021年09月17日 00:00/ 0 赞/ 345 阅读
相关 策略模式 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式中,我们创建表示各种策略的对象和一个行为 忘是亡心i/ 2021年09月16日 23:00/ 0 赞/ 372 阅读
相关 策略模式 策略模式 1. 模式动机 2. 模式定义 3. 模式结构 4. 时序图 5. 代码分析 6. 模式分析 7. 优点 8. 深碍√TFBOYSˉ_/ 2021年08月31日 02:47/ 0 赞/ 463 阅读
相关 策略模式 策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式中,我们创建表示各种策略的对象和一个... 小灰灰/ 2020年06月13日 05:38/ 0 赞/ 651 阅读
还没有评论,来说两句吧...