zoukankan      html  css  js  c++  java
  • 学习设计模式之策略模式

    策略模式指对象有某种行为,但是在不同的场景中,该行为有不同的实现算法。比如商场卖商品平时都是原价、有时候优惠活动会推出 9折、7折、5折等等活动就有不同的现金计算方法。
    1.定义了一组算法(业务规则);
    2.封装了每个算法;
    3.算法可互换代替(interchangeable)。
    在这里插入图片描述
    strategy(抽象策略角色)
    策略类,通常由一个接口或者抽象类实现。

    具体抽象角色
    封装了相关具体的算法或行为。

    Context(环境)
    持有一个策略类的引用,最终给客户端调用。

    优点:
    策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,他可以根据相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。简化了单元测试,因为每个算法都有自己的类,可以单独进行单元测试。
    缺点
    策略模式造成很多的策略类,每个具体策略类都会产生一个新类。有时候可以通过把依赖于环境的状态保存到客户端里面,而将策略类设计成可共享的,这样策略类实例可以被不同客户端使用。换言之,可以使用享元模式来减少对象的数量。

    勿在浮沙筑高台 ——个人浅见,难免有误导之处,麻烦请指出。
  • 相关阅读:
    斐波那契数列 的两种实现方式(Java)
    单链表反转
    单链表合并
    两个有序list合并
    list去重 转载
    RemoveAll 要重写equals方法
    Java for LeetCode 138 Copy List with Random Pointer
    Java for LeetCode 137 Single Number II
    Java for LeetCode 136 Single Number
    Java for LeetCode 135 Candy
  • 原文地址:https://www.cnblogs.com/liufeichn/p/11961654.html
Copyright © 2011-2022 走看看