美文网首页
策略模式

策略模式

作者: 落地生涯 | 来源:发表于2019-05-20 16:19 被阅读0次

    一、策略模式概述

    在策略模式中使用的一些面向对象(OO)原则:封装变化,多用组合,少用继承;针对接口编程,不针对实现编程。

    策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。此模式让算法的变化独立于使用算法的客户。

    策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。

    策略模式涉及到三个角色:

    环境角色(context):持有一个Strategy的引用。

    抽象策略角色(Strategy):这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需要的接口。

    具体策略角色(Concrete Strategy):包装了相关的算法或行为。

    二、案例代码

    策略模式上下文:

    抽象策略类:

    具体策略类:

    客户端调用:

    三、策略模式的优缺点

    1、优点

    (1)算法可以自由切换

    (2)避免使用多重条件判断

    (3)扩展性良好

    2、缺点

    (1)策略类会增多

    (2)所有策略类都需要对外暴露

    3、适用场景

    (1)当一个系统中有许多类,他们之间的区别仅在于他们的行为,希望动态的让一个对象在许多行为中选择一种行为时。

    (2)当一个系统需要动态地在几种算法中选择一种时。

    (3)一个对象有很多行为,不想适用多重的条件选择语句来选择使用哪个行为时。

    四、应用场景

    Java对象排序中的应用:Comparator外部比较器接口

    抽象策略类:

    具体策略类:

    策略模式上下文调用:

    相关文章

      网友评论

          本文标题:策略模式

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