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