设计模式-策略模式

阅读《Head First 设计模式》中文版读后感。

需要基础

1. 对 OOP 有基本理解

2. 有过实际的 J2EE 项目开发经验

大纲

1. UML 理论图和实际对比图

2. 百度关于该模式的定义和自己的理解对比

UML 理论图和实际对比图

百度关于该模式的定义和自己的理解对比

百度百科

  意图
    定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。
  适用性
    1.许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为来配置一个类的方法。
    2.需要使用一个算法的不同变体。例如,你可能会定义一些反映不同的空间/时间权衡的算法。当这些变体实现为一个算法的类层次时,可以使用策略模式。
    3.算法使用客户不应该知道的数据。可使用策略模式以避免暴露复杂的、与算法相关的数据结构。
     一个类定义了多种行为, 并且这些行为在这个类的操作中以多个条件语句的形式出现。将相关的条件分支移入它们各自的Strategy类中以代替这些条件语句。
个人理解
  意图
    寻找代码中经常变化和需要新增的地方,抽离这部分,在基础代码这里也就是Duck类里面只留下抽象引用。
  适用性
    百度说的太笼统了,这里举个自己在实际开发中使用到策略模式的地方,关于支付通道既可以是微信支付也可以是支付宝或pos刷卡,这里我将支付这个行为抽离出来,
    然后编写 微信支付实现类,支付宝支付实现类, pos刷卡实现类。

很多内容都是书中直接摘出,写博客只是为加深对设计模式的印象。

原文地址:https://www.cnblogs.com/linma/p/5435422.html