zoukankan      html  css  js  c++  java
  • 策略模式(Strategy Pattern)


    是什么?

    怎么用?

    在什么情况下用?

    例子!


    策略模式:

      对象有某个行为,但在不同的场景下,改行为有不同的实现算法。

      比如:

        每个人都要交「个人所得税」,但「在美国交的个人所得税」和「在中国交的个人所得税」有不同的算法。

      再比如:

        鸭子(所有的鸭子)有翅膀,但木头做的鸭子不会飞,活的鸭子会飞,机械鸭子用动力飞。

    使用场景:

      1、一个系统有很多类,但这些类的区别仅是它们的行为不同。

      2、一个系统需要在几个算法中动态的选择一种。那么这些算法可以包装到一个个具体的算法类中,而这一个个具体的算法类都是一个抽象算法类的子类。

    原理:

      1、定义一族算法(业务规则,如:鸟的飞行方式、个人所得税的缴税方式)

      2、封装每个算法。

      3、这些算法之间可以相互替换。

    例子:

    比如:

      设计一个鸭子游戏,游戏中会出现各种鸭子,鸭子类型有木头鸭(不会飞,不会叫)、模型鸭(不会叫,动力飞)、绿头鸭(会飞、会叫)。

      Duck 类相当于Context,是鸭子的基类,所有的鸭子都继承这个类。

      RubberDuck、ModeDuck 橡皮鸭和模型鸭,是具体的鸭子类。

      FlyBehavior 是飞行的行为,是个接口,所有的飞行行为都继承这个接口。所有的飞行行为组成了一组算法。

      FlyWithWings、FlyWithRocket 是具体的飞行类,每个类中实现了一种飞行方式,所有的具体类实现了接口的fly()方法。

      QuackBehavior 是鸣叫的行为,是个接口,同飞行类一样。所有的鸣叫方式都实现这个接口。

      Quack、Squeak 是具体的鸣叫方式。

  • 相关阅读:
    黄聪:C#中CefSharp的简单使用
    ArcGIS Pro关闭窗口和退出
    AddOverlay
    ArcGIS Pro固定纸张限定比例尺自动调整纵横打印
    ArcGIS pro增加一个独立表到地图
    ArcGIS Pro How to remove standalone table from contents
    ArcGIS Pro的进度条
    CreatePolygonGraphicElement
    Creating a Group with a List of Elements
    ArcGISPro理解多线程
  • 原文地址:https://www.cnblogs.com/Mr-Wenyan/p/10204570.html
Copyright © 2011-2022 走看看