import java.util.HashMap; public class XuQiu { /** * 策略模式构建当池子中包含某个元素的时候,执行池子元素+1 * 池子不包含某种元素的时候,给池子中添加元素 * 分析:两种动作,给池子中的元素+1, 给池子中添加元素,值为1 * 本人对策略模式的理解:主要解决的是行为【算法】的使用者 和 行为【算法】 本身的解耦合 * 本例中XuQiu类是行为【算法】的使用者,而 Action接口及其子类是行为【算法】本身 * 优点:结构清晰,适当符合开闭原则:假如又来一种情况,只需要增加action子类和修改响应的调用,而不用动调用者这一层了 * 优点2: 便于将action对象优化为单例,这样效率一点也没有影响,只用new一次。 * 缺点:多new了对象。 * */ public static HashMap<String,Integer> poll; public static void main(String[] args) { poll=new HashMap(); String key="usdt"; for(int i=0;i<=5;i++){ Action1.getInstance().add(poll,key); System.out.println(poll); } } }
================行为在下面======================
import java.util.HashMap; /** * 三元表达式的另外一种使用情况:三元只是需要执行某个命令,而不需要返回值时,就返回一给无用的,但是不引用 * 这也是消灭if else的一个利器。 */ public class Action1 implements Action { public static final Integer addNum = 1; private Action1(){} static Action1 action1; public static Action1 getInstance(){ if(action1==null){ action1=new Action1(); } return action1; } public void add(HashMap<String, Integer> poll, String key) { Integer num = poll.get(key); Integer integer = poll.get(key) != null ? poll.put(key, num + addNum) : Action2.getInstance().add(poll, key); } }
import java.util.HashMap; import java.util.Optional; /** * 当一个对象频繁创建,并且只是使用对象方法的话,这个对象也可以单例 * */ public class Action2 { public static final Integer originNum=1; private Action2(){ } private static Action2 action2; public static Action2 getInstance(){ if(null==action2){ action2= new Action2(); } return action2; } public Integer add(HashMap<String, Integer> poll, String key) { return Optional.ofNullable(poll.put(key, originNum)).orElse(2); } }
来源:CSDN
作者:军刀麦
链接:https://blog.csdn.net/weixin_42333583/article/details/103712982