您当前的位置: 首页 > 

命运之手

暂无认证

  • 1浏览

    0关注

    747博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【设计模式】【14】策略模式

命运之手 发布时间:2022-04-19 10:06:29 ,浏览量:1

应用场景

策略模式,英文名Strategy Pattern

该模式将一组算法(业务方案)封装起来,使用时根据需要动态切换对应的算法去解决问题

该模式的优点是,方案可以自由切换,动态插拔,不必使用许多if-else来判断如何处理

一般适用于以下场景

  • 解决方案有多种,需要自由切换
  • 不希望方案细节暴漏给使用者,使用者直接调用现成对象即可

代码实现一


	public interface Strategy {
	
	    void resolve();
	}
	
	public class StrategyA implements Strategy {
	
	    @Override
	    public void resolve() {
	    }
	}
	
	public class StrategyB implements Strategy {
	
	    @Override
	    public void resolve() {
	    }
	}


	public class Problem {
	
	    //根据需要动态替换
	    public Strategy strategy;
	
	    public void resolve() {
	        strategy.resolve();
	    }
	}

代码实现二

当常用的策略类型为有限个时,可以通过枚举类的方式,将多种策略整合到一个枚举类中


	public enum Strategy {
	
	    ADD("+") {
	        @Override
	        public int calculate(int a, int b) {
	            return a + b;
	        }
	    },
	    SUB("-") {
	        @Override
	        public int calculate(int a, int b) {
	            return a - b;
	        }
	    },
	    MULT("*") {
	        @Override
	        public int calculate(int a, int b) {
	            return a * b;
	        }
	    },
	    DIV("/") {
	        @Override
	        public int calculate(int a, int b) {
	            return a / b;
	        }
	    };
	
	    private String type;
	
	    private Strategy(String type) {
	        this.type = type;
	    }
	
	    @Override
	    public String toString() {
	        return type;
	    }
	
	    public abstract int calculate(int a, int b);
	}

关注
打赏
1654938663
查看更多评论
立即登录/注册

微信扫码登录

0.0382s