ステート・モード
内部の異なる状態オブジェクトでラップされたオブジェクトの振る舞いを研究する状態モード、
各オブジェクトは、抽象クラスのサブクラスの状態の状態に属しています。
その意図は、彼らの行動が変化したとき、その内部状態での状態モデルオブジェクトの変更を行うことです。
定義された状態(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 }