设计模式之策略模式和状态模式

本文介绍了策略模式,通过创建不同的策略对象来改变Context的行为。例如,`OperationAdd`、`OperationSubstract`和`OperationMultiply`实现了策略接口,Context根据传入的策略对象执行相应的操作,如加法、减法和乘法。在`StrategyPatternDemo`中展示了如何通过更换策略对象来改变计算结果。
摘要由CSDN通过智能技术生成

1 策略模式

我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法,

我们可以简单理解为更加不同的策略对象,执行不同策略方法。


2 类图

 
3 代码实现

1)接口:Strategy.java

    public interface Strategy {
       public int doOperation(int num1, int num2);
    }

 2)实现类:OperationAdd.java

    public class OperationAdd implements Strategy{
       @Override
       public int doOperation(int num1, int num2) {
          return num1 + num2;
       }
    }

3)实现类:OperationSubstract.java

    public class OperationSubstract implements Strategy{
       @Override
       public int doOperation(int num1, int num2) {
          return num1 - num2;
       }
    }

4)实现类:OperationMultiply.java

    public class OperationMultiply implements Strategy{
       @Override
       public int doOperation(int num1, int num2) {
          return num1 * num2;
       }
    }

5)创建Context.java

    public class Context {
       private Strategy strategy;
     
       public Context(Strategy strategy){
          this.strategy = strategy;
       }
     
       public int executeStrategy(int num1, int num2){
          return strategy.doOperation(num1, num2);
       }
    }

StrategyPatternDemo 里面的main函数

    public class StrategyPatternDemo {
       public static void main(String[] args) {
          Context context = new Context(new OperationAdd());    
          System.out.println("10 + 5 = " + context.executeStrategy(10, 5));
     
          context = new Context(new OperationSubstract());      
          System.out.println("10 - 5 = " + context.executeStrategy(10, 5));
     
          context = new Context(new OperationMultiply());    
          System.out.println("10 * 5 = " + context.executeStrategy(10, 5));
       }
    }

更多请见:http://www.mark-to-win.com/tutorial/51929.html 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值