通俗易懂java设计模式——策略模式(Strategy)
策略模式:它定义了算法簇,分别封装起来。让它们之间可以互相替换,可以适合增加删除使用一个或者多个算法,此模式让算法的变化,不会影响到使用算法的客户。
举例:
最近公司leader 遇到了资金短缺问题,召集公司成员开会,然后好不尴尬的给员工下了一个命令,各自准备为公司做点小奉献,凑点钱,至于怎么凑,就看员工几己了。。。
简单看看我们博大精深的汉子文化对“策略”的解释:
1、可以实现目标的方案集合;
2、根据形势发展而制定的行动方针和斗争方法;
此时的场景: 我们来对号入座下,leader 的目标凑钱,让员工们来凑钱(实现目标的方案),然后不同的员工如何凑够自己的钱,自己想办法,得自己实现,比如下面:
方案1卖白菜(员工1 目标凑钱){卖白菜凑钱 赚了20块}(一般般)
方案2炒股(员工2 目标凑钱){炒股凑钱 亏了3000块}(要被炒了)
方案3卖屁屁(员工3 目标凑钱){卖屁屁凑钱 赚了两万块}(哈哈哈,好员工)
对应到代码中的应用,我们简单来敲一下下:
Leader 的龌龊目标 - 赚钱,我们定义成接口,然后才能让员工实现赚钱的目标,去各自凑钱。
//目标,老板给的命令(声明策略)
public interface GetMoneyInter{
public int GetMoney();//返回获得的凑钱数
}
//方案(实现策略)
public class Member1 implements GetMoneyInter{
@Override
public int GetMoney() {
//卖白菜凑钱 赚了20块
return 20;
}
}
//方案(实现策略)
public class Member2 implements GetMoneyInter{
@Override
public int GetMoney() {
//炒股凑钱 赚了3000块
return 3000;
}
}
//方案(实现策略)
public class Member3 implements GetMoneyInter{
@Override
public int GetMoney() {
//卖屁屁凑钱 赚了两万块
return 20000;
}
}
//老板要收取赃款了(运用策略,)
public class LeaderSimleGetMoney{
int money = -3000;//原本负债3000
private GetMoneyInter getMoneyInter;
//看员工策略总共凑集多少钱
int 张三Money = getBy(new Member1());
int 李四Money = getBy(new Member2());
int 王五Money = getBy(new Member3());
int total = 张三Money+李四Money+王五Money;//总共凑的钱
int leave = total+money;//还剩多少
Log.e("奖励","王五优秀员工了");
}
//
public int getBy(GetMoneyInter getMoneyInter){
return getMoneyInter.GetMoney();
}