【注意】最后更新于 December 15, 2017,文中内容可能已过时,请谨慎使用。
最近有点迷茫,就想着来看些东西吧。java里面的设计模式一直没有系统学习过,就开一篇来学一学。本篇讲的是策略模式。
不看不知道,看了才发现原来好多模式我在实际都用过了,只不过没有这么系统,没有名称。
什么是策略模式呢?
什么是策略呢?
策略嘛,就是不同的问题不同的解决方案呗!
比如他骂我一句,我也得骂回去!他打我一下,我也得打回去!
当然,如果他骂你一句,你要打回去,当我没说。
这就是策略了!
我们考虑下代码!
不管你骂他还是小拳拳锤他胸口,都是一个相应动作对吧,都是属于一个共有的,所以,可以把这个共有的抽象成一个接口,然后不同的操作就来继承实现。
然后,你看啊!这是你想回复别人,万一你想主动招惹别人呢?
所以,我们需要一个东西,能够管理,类似于管家的东西,就直接操作,不管什么内容了。
好了,我们来看下代码。
1
2
3
4
5
|
package top.txiner.strategy;
public interface Resp {
public void action();
}
|
看,你要回复别人抽象出来的套路。
1
2
3
4
5
6
7
|
package top.txiner.strategy;
public class RespBySwear implements Resp {
public void action() {
System.out.println("fxxk you");
}
}
|
骂回去!
1
2
3
4
5
6
7
|
package top.txiner.strategy;
public class RespByHit implements Resp {
public void action() {
System.out.println("small fist hammer you chest");
}
}
|
不要怂,就是怼!
怎么怼想好了,就得看什么时候怎么怼了!
1
2
3
4
5
6
7
8
9
10
11
12
13
|
package top.txiner.strategy;
public class Handler {
private Resp resp;
public Handler(Resp resp) {
this.resp = resp;
}
public void handle() {
this.resp.action();
}
}
|
这个就是直接处理了。我管着这些怼的方式!想怼了,给我说下,没毛病,老铁!
好了,我们来实战下!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
package top.txiner.strategy;
public class People {
public static void main(String[] args) {
System.out.println("fxck you!");
Resp resp = new RespBySwear();
Handler handler = new Handler(resp);
handler.handle();
System.out.println("再瞅下试试!");
resp = new RespByHit();
handler = new Handler(resp);
handler.handle();
}
}
|
小明,卒!
------------分割线-----------------
我是用比较奇葩的方式写的,再正规的说下,上面的抽象的对人方式就叫抽象策略角色,具体的怼人方式就叫具体策略角色,说没毛病老铁的就是环境、上下文(context,不好翻译)。
有错误请及时提醒!