策略模式(Strategy)

1

定义

  策略模式(Strategy):属于行为型模式,将每个算法封装起来,使他们之间可以相互替换,即让算法可以独立于使用者发生变化。

代码实战

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
interface Strategy {
void doScheduler();
}

class BadThing implements Strategy {
@Override
public void doScheduler() {
System.out.println("心情不好吃火锅!");
}
}

class GoodThing implements Strategy {
@Override
public void doScheduler() {
System.out.println("心情好去唱歌!");
}
}

class NormalThing implements Strategy {
@Override
public void doScheduler() {
System.out.println("心情一般打游戏!");
}
}

class Person {
Strategy strategy = new NormalThing();

void setStrategy(Strategy strategy) {
this.strategy = strategy;
}

void doNext() {
strategy.doScheduler();
}
}

class Test {
public static void main(String[] args) {
Person person = new Person();
person.doNext();

person.setStrategy(new BadThing());
person.doNext();

person.setStrategy(new GoodThing());
person.doNext();
}
}

类图

1

特点

  策略模式的特点是,创建一个策略的接口。然后不同的具体策略都实现各自的方法。使用者持有一个策略对象和一个setStrategy的方法,可以对策略进行修改。

总结

  策略模式使用的场景还是比较多的,在内核领域中比较常见,因为系统状态可能有很多,可以通过某个接口修改调度策略。小伙伴们一定要牢记这种设计模式。

-------------本文结束感谢您的阅读-------------
0%