美文网首页
策略模式

策略模式

作者: 落地生涯 | 来源:发表于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