持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情
设计模式系列文章目录
如果本文对你们的开发之路有所帮助,请帮忙点个赞,您的支持是我坚持写博客的动力
前言
本系列课程将带着大家以面试题的方式 深入设计模式。这么快到了设计模式的第五篇啦,上一篇文章带着大家输入学习了设计模式的工厂模式,这篇文章带着大家深入策略模式
项目代码见 gitee.com/janyxe/desi…
策略模式定义
Define a family of algorithms,encapsulate each one,and make them interchangeable.(定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。)
策略模式是什么/策略模式概念
抽取共同行为,根据抽象策略实现不同的策略,交给不同的子类实现 策略模式主要解决多重条件判断的问题
能画出策略模式类图吗?并简单说明下
Java 三大特性:封装、继承、多态
策略模式使用的就是面向对象的继承和多态机制
-
Context 封装角色
Context 封装角色也叫上下文角色。屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化
-
Strategy 抽象策略角色
策略的抽象,通常为接口,定义每个策略或算法必须具有的方法和属性
- ConcreteStrategy 具体策略角色
实现抽象策略中的操作,实现具体的算法
说说策略模式优缺点
优点
- 避免多重条件(if)判断
- 扩展性高(在不影响整体功能前提下添加删除算法)
缺点
- 策略类增加,每实现一个策略都需添加策略类,复用性降低
- 策略类都需对外暴露
策略模式应用场景
- 算法需要灵活切换
- 多个类都有公共的抽象行为,通过实现不同的算法/行为实现不同的场景
实现应用场景
- 聚合支付场景(微信支付、支付宝支付、银联支付)
- 联合登录(QQ登录、微信登录、钉钉登录、Github登录、手机号码登录)
- 实现不同的短信发送渠道(腾讯云短信、阿里云短信)