1, 什么是策略模式

1.1  未达到预期目的的各种应对方案

1.2  程序代码中的每一个分支都可以称之为策略, 而策略模式,则是将行为划分到具体类, 使用类对象区分行为

2, 优缺点

2.1  减少IF语法使用, 封装代码, 更便于维护

2.2  需要更加良好的约定协议, 否则IF语句还是少不了的, 就比如如何生成不同的具体策略, 没有约定的话, IF一个都少不了

2.3  策略类的增多, 多个IF ELSE, 优化后的策略类将会更多

3, 上代码

public abstract class IStrategy {protected String name;// 策略抽象商品列表public abstract String productList();
}public class StrategyA extends IStrategy {@Overridepublic String productList() {return "香奈儿xxx";}
}public class StrategyB extends IStrategy {@Overridepublic String productList() {return "兰蔻xxx";}
}public interface IExecute {// 抽象执行者, 购物, 使用何种策略就行购物void shoppping(IStrategy strategy);
}public class Execute implements IExecute {@Overridepublic void shoppping(IStrategy strategy) {System.out.println("策略:" + strategy.name + "||" + strategy.productList());}
}public class Main {public static void main(String[] args) {IStrategy a = new StrategyA();a.name = "A计划";IStrategy b = new StrategyB();b.name = "B计划";IExecute execute = new Execute();execute.shoppping(a);execute.shoppping(b);}
}//=================================
策略:A计划||香奈儿xxx
策略:B计划||兰蔻xxxProcess finished with exit code 0

进阶学习(3.14) Strategy Pattern 策略模式相关推荐

  1. 【图解设计模式系列】The Strategy Pattern: 策略模式

    当不同的行为堆砌在一个类中时,就很难避免使用条件语句来选择合适的行为.讲这些行为封装在一个个独立的Strategy类中,可以在使用这些行为的类中消除条件语句.(大概的意思就是说 我们要多多利用多态 而 ...

  2. 进阶学习(3.13) Proxy Pattern 代理模式

    1, 代理模式, 这个地方的代理不是指JDK 动态代理 2, 代理模式和策略模式很像, 要注意区分, 区分的特征就是 2.1) 装饰者可以对任何的装饰抽象实例进行装饰, https://blog.cs ...

  3. 进阶学习(3.11) Facade Pattern 门面模式

    1, 什么叫门面模式, 也称之为接待员模式 1.1 我更愿意称之为阿拉丁模式, 阿拉丁灯神, 你想什么, 它就直接给你实现了, 你别管中间有多少困难, 他就直接给你实现了 1.2 好下面介绍门面模式, ...

  4. 进阶学习(3.9) Bridge Pattern 桥接模式

    1, 什么是桥接 桥,  提供给两方, 或者多方相交汇的作用, 例如, A 函数想调用 B 函数, 常见的方法就是, 直接在A 中显式 调用B, 这样存在高耦合,  如果我们使用一个中间函数C, 在C ...

  5. 进阶学习(3.8) Component Pattern 组合模式

    1, 什么是组合模式 一句话概括, 复杂的实体类, 一个对象里面包含多个对象, 就是一种组合, 完善对象的数据多样性, 其实大部分的设计模式, 我们再日常编程中都会使用, 有些可能使用了完整的思想, ...

  6. 进阶学习(3.6) Prototype Pattern 原型模式

    1, 什么是原型模式 1.1  通过浅拷贝(Cloneable)或者深拷贝(二进制流), 实现对一个复杂对象的刻复, 减少从零生成对象时消耗的性能 2,有什么业务场景 2.1  数据缓存, 查询数据库 ...

  7. 进阶学习(3.4) Builder Pattern 建造者模式

    1, 解决了什么 1.1 按照步骤拆分复杂对象的创建 1.2 能快速查找到是哪个步骤出了问题 1.2 更换蓝图就可以生产不同的具象对象 2, 参与者 需求者(Builder),             ...

  8. 进阶学习之旅-设计模式之(委派模式策略模式)

    文章目录 1.课程学习目标 2.内容定位 3.委派模式详解 3.1委派模式的定义 3.2 demo案例 3.2.1模拟Boss指派任务给Leader 由员工完成任务执行 3.2.2 模拟spring ...

  9. 设计模式之Strategy(策略模式系列1)

    看了Jdon上写的的策略模式,例子很简单,代码有些错误.http://www.jdon.com/designpatterns/ 文章写的比较早,其实现在的策略模式大多是用Enum来实现,会简单的多,但 ...

最新文章

  1. java实现用户登录注册功能(用集合框架来实现)
  2. 互联网团队协作:可追溯【连载三】
  3. CMSGC造成内存碎片的解决方法
  4. win10水印烦死了_win10系统下word去水印的方法【图文】
  5. (C语言)请编写程序,计算1-1/2-1/3-1/4-.....-1/50的和。
  6. npm ERR! the command again as root/Administrator
  7. mac安装和卸载mysql_基于centos7系统卸载rpm安装的mysql
  8. 宏定义函数container_of的解释
  9. linux里用c实现cat_【案例】用T云做了什么能让企业在工业自动化控制系统行业里实现逆向增长?...
  10. 解读革命性容器集群CCE Turbo:计算、网络、调度全方位加速
  11. ppa java 8_通过 ppa 在ubuntu server 上安装java 8
  12. 第三届蓝桥杯省赛---马虎的算式
  13. 改图宝,快速修改图片大小
  14. matlab运算放大器仿真,利用Matlab分析运算放大器电路.doc
  15. 阿里云图片服务器OSS对象存储器使用方法(附详细步骤)
  16. Composer Class Fxp\Composer\AssetPlugin\Repository\NpmRepository does not exist
  17. 海南大学研究生计算机分数线,海南大学研究生录取分数线
  18. QNX ETH VLAN ping 不通
  19. LaTeX 页面设置 插入代码
  20. openharmony容器组件之Refresh

热门文章

  1. python yield遍历目录
  2. 67 Airflow配置MySQL数据库和LocalExecutor
  3. ue查找多个关键字_聊聊数据库GROUP BY关键字的那些事
  4. java正则表达式所有字符串_java正则表达式获取字符串中所有匹配的内容
  5. 帆软填报提交显示违反唯一约束_贵州2020年高考网上填报志愿时间确定!这些事项需要注意...
  6. java控制结构_java控制结构WORD
  7. java 主线程_Java中的主线程 - Break易站
  8. pic单片机c语言nop,PIC单片机的读写93XCXX程序
  9. mysql设置text字段为not null,并且没有默认值,插入报错:doesn't have a default value
  10. php中的unlink(),unset(),rmdir()删除函数