Java 中的模式 --- 簡單的狀態模式
狀態模式很簡單,無論是理解,還是實現,都很簡單。一、定義:
1,狀態模式允許一個"對象"在其內部狀態改變的時候改變其行為。
2,狀態模式的角色:
抽象狀態,具體狀態,環境(context)角色
狀態模式的角色比較簡單,不用解釋了,看名字就能了解。
二、狀態模式的實現
1,簡單實例
1
public class Context
{
2
private State state;
3
public void sampleOperation()
{
4
state.sampleOperation();
5
}
6
public void setState(State state)
{
7
this.state = state;
8
}
9
}
10
public interface State
{
11
void sampleOperation();
12
}
13
public class ConcreteState implements State
{
14
public void sampleOperation();
15
}
2、狀態模式的經典實現


2

3



4

5

6



7

8

9

10



11

12

13



14

15

Tcp就是狀態模式的一個經典實現:TcpConnect 他有三個狀態,TcpEstablished TcpListen TcpClosed
TcpConnect的功能會跟著狀態的改變而改變。或是Established,或是Listen,或是Closed
三、狀態模式的與策略模式,看到上邊的部分,很容易讓人想到策略模式,這兩個模式有什么區別呢?如何使用
策略模式:
1,當一個環境角色選擇了一個具體的策略,那么在整個環境類的生命周期都不會改變
2,策略模式的環境自己選擇一個具體的策略
3,策略模式并不明確告訴客戶端它所選擇的具體策略是什么,對客戶是黑箱。
狀態模式:
1,在整個環境類的生命周期中會有明顯的狀態改變。
2,狀態模式是被外在原因放入一個策略
3,狀態模式明顯的告訴客戶端當前的狀態,對客戶是白箱。
posted on 2006-12-03 11:51 dreamstone 閱讀(3506) 評論(1) 編輯 收藏 所屬分類: 設計模式