赞
踩
策略模式(Strategy Pattern)是一种常用的软件设计模式,属于行为型模式。它的目的是定义一系列算法,并将每个算法封装起来让它们可以互换使用,算法的变化不会影响使用算法的用户。策略模式常用于创建一组可互换的算法,客户端可以根据需要选择不同的算法。
封装性:每个算法都被封装在独立的策略类中,这些类通常实现了相同的接口。
可互换性:客户端可以通过切换不同的策略实现来改变算法,而不需要修改依赖算法的代码。
灵活性:策略模式使得算法的变化独立于使用算法的客户端。
易于扩展:可以很容易地添加新的策略,而不需要修改现有代码。
Strategy
接口,包含算法的方法。Strategy
接口,并实现具体的算法。Context
类,它有一个Strategy
类型的成员变量,用于持有策略对象,并有一个方法用于执行策略。Context
。- interface Strategy {
- public int doOperation(int a,int b);
- }
- class OperationAdd implements Strategy{
-
- @Override
- public int doOperation(int a, int b) {
- return a + b;
- }
- }
- class OperationSubstract implements Strategy{
-
- @Override
- public int doOperation(int a, int b) {
- return a - b;
- }
- }
- class OperationMultiply implements Strategy{
-
- @Override
- public int doOperation(int a, int b) {
- return a*b;
- }
- }
- class Context{//Context类是核心
- Strategy strategy;
-
- public Context(Strategy strategy){
- this.strategy = strategy;
- }
- public void setStrategy(Strategy strategy) {
- this.strategy = strategy;
- }
-
- public int cal(int a,int b){
- return strategy.doOperation(a,b);
- }
- }
- public class StrategyDemo{
- public static void main(String[] args) {
- Context context = new Context(new OperationAdd());
- System.out.println(context.cal(2, 3));
-
- context =new Context(new OperationMultiply());
- System.out.println(context.cal(3, 4));
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。