java设计模式---策略模式

策略模式(Strategy Pattern)
现在来地说说如何来实现策略模式(锦囊妙计):
1、策略[妙计]实现接口(IStrategy);
2、对应的策略实现类(*Strategy);
3、封装策略的锦囊(StrategyContext);
4、策略执行者(StrategyExecute)。
  • IStrategy.java

    /*
    *策略实现的接口
    */
    public interface IStrategy{
    //策略执行方法
        public void  operate();
    }
    
  • FirstStrategy.java [策略1]

    public class FirstStrategy impelements IStrategy{
      public void operate(){
            system.out.printf("this is the first strategy");
        }
    }
    
  • SecondStrategy.java[策略2]

    public class SecondStrategyimpelements IStrategy{
      public void operate(){
            system.out.printf("this is the second strategy");
        }
    }
    
  • ThirdStrategy.java[策略3]

    public class SecondStrategyimpelements IStrategy{
      public void operate(){
            system.out.printf("this is the third strategy");
        }
    }
    


    策略已经有了,那么现在就需要一个盒子(锦囊)来把这个策略(妙计)给装起来以方便使用,以下就定义这么一个盒子:
    -StrategyContext.java[锦囊]

    public class StrategyContext{
    private IStrategy iStrategy;
    public StrategyContext(IStrategy iStrategy){
    this.iStrategy=iStrategy
    }
    public void doOperate(){
    this.iStrategy.operate();
    }
    }
    

    锦囊已经有了,现在就是缺少使用的人了(也就是执行者)

  • StrategyExecute.java(执行者)

    /**
    *执行者
    */
    public class StrategyExecute{
        public static void main(String[] args){
            StrategyContext context1=new StrategyContext(new FirstStrategy());
            context1.doOperate();//output: this is the first strategy
                    StrategyContext context2=new StrategyContext(new SecondStrategy());
            context1.doOperate();//output: this is the second strategy
                    StrategyContext context3=new StrategyContext(new ThirdStrategy());
            context1.doOperate();//output: this is the third strategy
    
        }
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值