如果本文对你们的开发之路有所帮助,请帮忙点个赞,您的支持是我坚持写博客的动力
【设计模式相关书籍】wx关注【Java从零学架构】,后台回复【设计模式】自取
前言
本系列课程将带着大家以面试题的方式 深入设计模式。这么快到了设计模式的第五篇啦,上一篇文章带着大家输入学习了设计模式的工厂模式,这篇文章带着大家深入策略模式
项目代码见 https://gitee.com/janyxe/design_patterns
策略模式定义
Define a family of algorithms,encapsulate each one,and make them interchangeable.(定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。)
策略模式是什么/策略模式概念
抽取共同行为,根据抽象策略实现不同的策略,交给不同的子类实现
策略模式主要解决多重条件判断的问题
能画出策略模式类图吗?并简单说明下
Java 三大特性:封装、继承、多态
策略模式使用的就是面向对象的继承和多态机制
-
Context 封装角色
Context 封装角色也叫上下文角色。屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化
-
Strategy 抽象策略角色
策略的抽象,通常为接口,定义每个策略或算法必须具有的方法和属性
- ConcreteStrategy 具体策略角色
实现抽象策略中的操作,实现具体的算法
说说策略模式优缺点
优点
- 避免多重条件(if)判断
- 扩展性高(在不影响整体功能前提下添加删除算法)
缺点
- 策略类增加,每实现一个策略都需添加策略类,复用性降低
- 策略类都需对外暴露
策略模式应用场景
- 算法需要灵活切换
- 多个类都有公共的抽象行为,通过实现不同的算法/行为实现不同的场景
实现应用场景
- 聚合支付场景(微信支付、支付宝支付、银联支付)
- 联合登录(QQ登录、微信登录、钉钉登录、Github登录、手机号码登录)
- 实现不同的短信发送渠道(腾讯云短信、阿里云短信)
总结
如果本文对你们的开发之路有所帮助,请帮忙点个赞,您的支持是我坚持写博客的动力。
初次见面,也不知道送你们啥。干脆就送几百本电子书和最新面试资料,祝你们找到更好的工作。微信扫描下面公众号或微信搜索公众号 javaxe666
回复 电子书 送你 1000+ 本编程电子书;
回复 面试 获取 最新大厂面试题;