策略模式

2019-05-20  本文已影响0人  落地生涯

一、策略模式概述

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

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

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

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

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

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

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

二、案例代码

策略模式上下文:

抽象策略类:

具体策略类:

客户端调用:

三、策略模式的优缺点

1、优点

(1)算法可以自由切换

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

(3)扩展性良好

2、缺点

(1)策略类会增多

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

3、适用场景

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

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

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

四、应用场景

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

抽象策略类:

具体策略类:

策略模式上下文调用:

上一篇下一篇

猜你喜欢

热点阅读