定義:在狀態(tài)模式(State Pattern)中,類的行為是基于它的狀態(tài)改變的。
特點:
1、封裝了轉換規(guī)則。
2、枚舉可能的狀態(tài),在枚舉狀態(tài)之前需要確定狀態(tài)種類。
3、將所有與某個狀態(tài)有關的行為放到一個類中,并且可以方便地增加新的狀態(tài),只需要改變對象狀態(tài)即可改變對象的行為。
4、允許狀態(tài)轉換邏輯與狀態(tài)對象合成一體,而不是某一個巨大的條件語句塊。
5、可以讓多個環(huán)境對象共享一個狀態(tài)對象,從而減少系統中對象的個數。
企業(yè)及開發(fā)和常用框架中的應用:
實例:
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
|
public class Demo { public static void main(String[] args) { Context context = new Context(); State move = new Move(); move.show(context); State stop = new Stop(); stop.show(context); } } class Context{ private State state; public void setState(State state){ System.out.println( "給物體加持狀態(tài)" ); this.state = state; } } interface State{ void show(Context context); } class Move implements State{ public void show(Context context) { context.setState(this); System.out.println( "物體處于運動狀態(tài)" ); } } class Stop implements State{ public void show(Context context) { context.setState(this); System.out.println( "物體處于靜止狀態(tài)" ); } } |
狀態(tài)模式是用于對象狀態(tài)比較多的情況,比如完成一件事的時候有未完成、已完成、進行中、擱置等狀態(tài),這時候就可以考慮是用狀態(tài)模式。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。