デザインパターン状態モード

ステート・モード

   内部の異なる状態オブジェクトでラップされたオブジェクトの振る舞いを研究する状態モード、

   各オブジェクトは、抽象クラスのサブクラスの状態の状態に属しています。

   その意図は、彼らの行動が変化したとき、その内部状態での状態モデルオブジェクトの変更を行うことです。

定義された状態(stateing)モード:
同様の戦略モード
状態において被験者、複雑な「決定ロジック」は、異なる状態オブジェクトを抽出する
ときに内部状態が変化し、オブジェクトの状態がその動作を変更することを可能にします。

環境(コンテキスト)の役割
  現在の状態を維持し、クライアントにとって関心のインタフェースを定義する、コンテキストと呼ばれる、
  オブジェクトの現在の状態の動作に関連する状態手数料は処理されます。

抽象状態(stateing)役割
  行動に対応する特定のパッケージ環境状態オブジェクトのインタフェースを定義します。

特定の状態(コンクリートstateing)役割
  行動に対応する抽象状態。
  1  パブリック クラスstateing {
   2      公共 静的 ボイドメイン(文字列[]引数){
   3          コンテキストコンテキスト= 新しいコンテキスト()。
  4          context.setSta(context.getClose())。
  5          context.close()。
  6          context.open()。
  7          context.run()。
  8          context.close()。
  9      }
 10  }
 11  
12  // 环境角色
13  クラスコンテキスト{
 14      // 状态
15      民間STA状態;
 16      // 行動
。17      専用オープンオープン;
 18は、     プライベート閉じるCLOSEする;
 19      プライベートRUNとruningて、
 20は 
21れる     パブリック ボイドsetSta(状態STA){
 22は、         この .STA = STA;
 23である         // 容易にするために、環境変数に基づいて、状態を追加環境変数の変化に基づいて、状態
24          sta.setCon(この);
 25      }
 26である 
27      公共コンテキスト(){
 28          この .Open = 新しい新オープニング();
 29          この .close =新しいCLOSEします();
30          この .RUN = 新しいruningて()。
31      }
 32  
33      公共 ボイドオープン(){
 34          sta.open()。
35      }
 36  
37      公共 ボイド近い(){
 38          sta.close()。
39      }
 40  
41      公共 ボイドラン(){
 42          sta.run()。
43      }
 44  
45      公衆状態GETSTA(){
 46          リターンSTA。
47     }
 48  
49      公衆開口getOpen(){
 50          リターンオープン。
51      }
 52  
53      公共 ボイドsetOpen(オープン開口){
 54          この = .open オープン。
55      }
 56  
57      公衆CLOSEするgetClose(){
 58          リターン閉じます。
59      }
 60  
61      公共 ボイドsetClose(CLOSEするクローズ){
 62          この .close = 近いです。
63      }
 64  
65      公衆getRun(){でruningて
 66          戻りRUN;
 67      }
 68  
69      公共 ボイド(RUNとruningて)setRun {
 70          この .RUN = RUN;
 71である     }
 72  
73である }
 74  
75  // 状態
76  抽象 クラス状態{
 77      // 状態を変化させます
78      プライベートコンテキストCON;
 79  
80      公共コンテキストgetCon(){
 81          リターンCON;
 82      }
 83  
84      公衆 ボイドSETCON(コンテキストCON){
 85          この .CON = CON。
86      }
 87  
88      公共の 抽象 無効)(オープン。
89  
90      パブリック 抽象 ボイド近いです();
91  
92      パブリック 抽象 ボイドラン();
93  }
 94  
95  // 具体行为
96  クラスの開口部が延びている状態{
 97  
98      @Override
 99      公共 ボイドオープン(){
 100         System.out.println( "エラー状態" );
 101      }
 102  
103      @Override
 104      公共 ボイドクローズ(){
 105          のSystem.out.println( "閉じる" );
 106          コンテキストCON = スーパー.getCon();
 107          CON。 setSta(con.getClose());
 108      }
 109  
110      @Override
 111      公共 ボイドRUN(){
 112          のSystem.out.println( "エラー状態" );
 113      }
 114  }
 115  
1 16  クラス CLOSEします延びている状態{
 117  
118      @Override
 119      公共 ボイドオープン(){
 120          のSystem.out.println( "开启" )。
121          コンテキストCON = スーパー.getCon()。
122          con.setSta(con.getOpen())。
123      }
 124  
125      @Override
 126      公共 ボイド近い(){
 127          のSystem.out.println( "错误状态" )。
128      }
 129  
130      @Override
 131      公共 ボイドラン(){
 132         System.out.println( "実行" );
 133          コンテキストCON = スーパー.getCon();
 134          con.setSta(con.getRun());
 135      }
 136  }
 137  
138  クラスでruningて延びている状態{
 139  
140      @Override
 141は     公衆 無効オープン(){
 142          のSystem.out.println( "エラー状態" );
 143      }
 144  
145      @Override
 146      公共 ボイドクローズ(){
 147          のSystem.out.println( "エラー状態" )。
148      }
 149  
150      @Override
 151      公共 ボイドラン(){
 152          のSystem.out.println( "正在のruningて" )。
153      }
 154 }

おすすめ

転載: www.cnblogs.com/loveer/p/11286003.html
おすすめ