美文网首页
策略模式

策略模式

作者: 姬94 | 来源:发表于2017-07-19 11:11 被阅读14次

    策略模式定义

    定义一系列的算法类,精每一个算法封装起来,并让他们可以相互替换,策略模式让算法独立于使用他的客户而变化,也成为政策模式。

    策略模式结构图

    策略模式结构图

    策略模式主要优缺点

    优点
    1.策略模式提供了开闭原则的完美支持,用户可以在不修改原有系统的基础上选择算法或行为,也可以灵活地增加新的算法和行为。
    2.策略模式提供了管理相关的算法族的办法。策略类的等级结构定义了一个算法或行为族,恰当使用继承可以吧公共的代码一道抽象策略类中,从而避免重复的代码。
    3.策略模式提供了一种可以替换继承关系的办法。如果不使用策略模式,那么使用算法的环境类就可能会有一些子类,每一个子类提供一种不同的算法。但是,这样一种算法使用就和算法本身混在一起,不符合单一职责原则,决定使用哪一种算法的逻辑和该算法本身混合在一起,从而不可能再独立演化;而且使用继承无法实现算法或行为在程序运行时的动态切换。
    4.使用策略模式可以避免多重条件选择语句。多重条件选择语句不移维护,他把采取哪一种算法活行为的逻辑与算法活行为本身的实现逻辑混合在一起,将他们全部硬编码在一个庞大的多重条件选择语句中,比直接集成环境类的办法还要原始和落后。
    5.策略模式提供一种算法复用机制,由于将算法独立提取出来封装策略类中,因此不同的环境类可以方便地复用这些策略。
    缺点
    1.客户端必须知道所有的策略类,并自行决定使用哪一个策略类。这就意味着客户端必须理解这些算法和区别,以便实时选择恰当的算法。
    2.策略模式将造成系统产生很多具体策略类,任何细小的变化都讲导致系统要增加一个新的具体策略类。
    3.无法同事在客户端使用过个策略类,也就是说用户每次只能使用一个策略类。

    策略模式使用场景
    1.一个系统需要动态的在集中算法中选择一种,那么可以将这些算法封装在一个个具体的算法类中,而这些具体算法类都是一个抽象算法类的子类。
    2.一个对象有很多行为,如果不用恰当的模式,这些行为就志浩使用多重条件选择语句来实现。
    3.不希望客户知道复杂的与算法相关的数据结构,在具体策略类中封装算法与相关的数据结构,可以提高算法和保密性与安全性。

    相关文章

      网友评论

          本文标题:策略模式

          本文链接:https://www.haomeiwen.com/subject/ermckxtx.html