策略模式: 定义一系列的算法, 将其一个个封装起来, 并使它们可相互替换, 使得算法可独立于使用它的客户而变化....(图片来源: 设计模式: 可复用面向对象软件的基础)
策略模式对应于解决某一问题的一个算法族, 允许用户从该算法族中任选一个算法解决该问题, 同时可以方便的更换算法或者增加新的算法....Context完成:
在基础策略模式中,选择所用具体Strategy实现的职责由Client承担, 并将其传递给Context, 这种方案对Client的负担较重, 因此将Context与简单工厂融合...场景
当使用一个算法的不同变体, 且这些变体可以实现为一个算法族时;
算法的客户不需要知晓其内部数据, 策略模式可以避免暴露复杂的、与算法相关的数据结构;
一个类定义了多种行为, 且这些行为以多个条件语句形式出现...相关模式
Flyweight: Strategy对象经常是很好的轻量级对象.