介绍
策略模式是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。
真实世界类比
各种前往机场的出行策略
假如你需要前往机场。 你可以选择乘坐公共汽车、 预约出租车或骑自行车。 这些就是你的出行策略。 你可以根据预算或时间等因素来选择其中一种策略。
策略模式示例:
我们将创建一个定义活动的 Strategy 接口和实现了 Strategy 接口的实体策略类。Context 是一个使用了某种策略的类。
StrategyPatternDemo,我们的演示类使用 Context 和策略对象来演示 Context 在它所配置或使用的策略改变时的行为变化。
执行程序,输出结果:
10 + 5 = 15 10 - 5 = 5 10 * 5 = 50
context中使用父类接口,调用通用方法。使用时,具体子类,调具体实现。
在 Java 中使用模式
识别方法: 策略模式可以通过允许嵌套对象完成实际工作的方法以及允许将该对象替换为不同对象的设置器来识别。
1、对 java.util.Comparator#compare()
的调用来自 Collections#sort()
.
2、javax.servlet.http.HttpServlet
: service()
方法, 还有所有接受 HttpServletRequest
和 HttpServletResponse
对象作为参数的 doXXX()
方法。
3、javax.servlet.Filter#doFilter()
转:https://www.runoob.com/design-pattern/strategy-pattern.html