面试必问设计模式之策略模式

如果本文对你们的开发之路有所帮助,请帮忙点个赞,您的支持是我坚持写博客的动力

【设计模式相关书籍】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+ 本编程电子书;
回复 面试 获取 最新大厂面试题;
在这里插入图片描述

在这里插入图片描述

评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

janyxe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值