行为型设计模式.策略模式

一、概念

1.1、定义

定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。让算法独立于使用它的客户而变化,即一个类的行为或其算法可以在运行时更改。


Strategy.png
  • Context,环境类:算法的使用者
  • Strategy:,抽象策略类:定义策略的执行接口方法
  • ConcreteStrategy,具体策略类:具体的算法设计中和执行者
1.2、解决的问题
  • 问题分析
    现实世界中,完成一项任务,往往可以选择不同的方式,每一种方式被称为一个策略,我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。

  • 模式解决思路:将变化的算法策略抽象出策略类Strategy,使用面向对象的子类派生或接口实现来达到扩展改变的目的;在程序运行时候,根据具体需要指定具体策略ConcreteStrategy实例。

二、模式的应用和优缺点

2.1、应用场景
  • 实例:
    1、日志文件的本地存储方案,文件、数据库等
    2、旅游出行交通方案,自行车、飞机、动车等
    3、App的更多功能操作面板,基层微信、微博、朋友圈分享、点赞、评论、复制等功能入口。如下



    4、在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。

2.2、优缺点
  • 优点:
    1、提供一种管理相关的算法族的办法,可以灵活扩展算法,符合开闭原则
    2、避免使用多重条件 if...else 判断
    3、扩展性良好。

  • 缺点:
    1、策略类会增多,可以结合享元模式进行优化
    2、策略类对外暴露,即客户端必须知道所有的策略类,并自行决定使用哪一个策略类

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 场景问题# 1.1 报价管理## 向客户报价,对于销售部门的人来讲,这是一个非常重大、非常复杂的问题,对不同的...
    七寸知架构阅读 10,547评论 9 62
  • 1 场景问题 1.1 报价管理 向客户报价,对于销售部门的人来讲,这是一个非常重大、非常复杂的问题,对不同的客户要...
    4e70992f13e7阅读 8,289评论 2 16
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,388评论 2 17
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,833评论 19 139
  • 1.问题例1:一个菜单功能能够根据用户的“皮肤”首选项来决定是否采用水平的还是垂直的排列形式。同事可以灵活增加菜单...
    小飞猪阅读 2,920评论 0 0

友情链接更多精彩内容