20、状态模式(State)
来源:互联网 发布:无人机电调算法 编辑:程序博客网 时间:2024/05/21 22:53
20、状态模式(State)
核心思想就是:当对象的状态改变时,同时改变其行为,很好理解!就拿QQ来说,有几种状态,在线、隐身、忙碌等,每个状态对应不同的操作,而且你的好友也能看到你的状态,所以,状态模式就两点:1、可以通过改变状态来获得不同的行为。2、你的好友能同时看到你的变化。看图:
State类是个状态类,Context类可以实现切换,我们来看看代码:
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
50
51
52
53
54
55
56
57
58
59
60
package
com.xtfggef.dp.state;
/**
* 状态类的核心类
* 2017-12-12
* @author fsj
*
*/
public
class
State {
private
String value;
public
String getValue() {
return
value;
}
public
void
setValue(String value) {
this
.value = value;
}
public
void
method1(){
System.out.println(
"execute the first opt!"
);
}
public
void
method2(){
System.out.println(
"execute the second opt!"
);
}
}
package
com.xtfggef.dp.state;
/**
* 状态模式的切换类 2012-12-1
* @author erqing
*
*/
public
class
Context {
private
State state;
public
Context(State state) {
this
.state = state;
}
public
State getState() {
return
state;
}
public
void
setState(State state) {
this
.state = state;
}
public
void
method() {
if
(state.getValue().equals(
"state1"
)) {
state.method1();
}
else
if
(state.getValue().equals(
"state2"
)) {
state.method2();
}
}
}
测试类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public
class
Test {
public
static
void
main(String[] args) {
State state =
new
State();
Context context =
new
Context(state);
//设置第一种状态
state.setValue(
"state1"
);
context.method();
//设置第二种状态
state.setValue(
"state2"
);
context.method();
}
}
输出:
execute the first opt!
execute the second opt!
阅读全文
1 0
- 20、状态模式(State)
- 20、状态模式(State)
- 20、状态模式(State)
- 设计模式(20)-状态模式(State)
- 状态模式(State)
- State(状态模式)
- State(状态)模式
- 状态(State)模式
- 状态模式(State)
- 状态模式(State)
- 状态模式(State)
- State(状态模式)
- State(状态模式)
- 状态模式(State)
- 状态模式(State)
- 状态模式(State)
- 状态模式(state)
- STATE(状态)模式
- AAPT2 编译报错 AAPT2 error
- vim关闭子窗口
- 关于ViewPager 嵌套ViewPager和flyco依赖冲突的解决办法
- 浅析全局变量与局部变量
- eclipse Server Tomcat Server at localhost failed to start.命令行可启动
- 20、状态模式(State)
- Nginx + Tomcat 动静分离实现负载均衡
- 百度地图定位功能的错误has leaked ServiceConnection 解决
- 欢迎使用CSDN-markdown编辑器
- filter过滤器简单实例
- URL编码/解码
- 在python中,用plot绘制折线图
- 正则表达式(RegEx)
- java--面向对象之继承3