あなたの優雅なロジック状態の変化を達成するために列挙ステートマシンを使用します

福祉

プログラミングの本へのアクセスを有することができるエンティティを描画するためのキーワード[宝くじ]を送信し、脂肪の弟小さな農場の庭:今すぐマイクロチャネル公共数に焦点を当てています。活動は3日間だけが参加つかみます!この週末のよう[ドロー]

序文

私は、多くのJava開発者は、このような順序としてビジネスプロセスの状態変化を書いたと考えているので、上のプロセスとを残します。我々は、ライフサイクルの段階を識別するために、一般的な状態識別に係合します。多くの人々は、このロジックを記述します:

81c16edb01abf9a6905287d6d7c1465f.png

プロセスの数十我々があれば爆発しようとしている場合。そして、この「0」、「1」は、いくつかの意味ですか?

最適化のアプローチは、もちろん、その状態で同じオブジェクトの異なる動作に応じてパッケージの状態を持つオブジェクトを許可する、彼のモデルを実行するために状態のデザインパターンを使用することができます。私たちは、プログラムされた状態の間で変換し、別々の状態を定義することができます。

3a7712fe25ea715da4cce999f7e08372.png

しかし、この操作は、あまりにも多くのオブジェクトの状態に依存して増加します。だから、何のショー、それは動作しませんがありませんか?もちろん。我々は最初のステート・マシンを理解することを学びます。

ステートマシン

ステートマシン有限状態マシンのフルネーム、ステートマシンの一般的な状態が離散し、列挙されているので、限られた理由です。状態の有限数の動作、並びにこれらと他の状態との間の転送および移動を表す状態機械数学的モデル。人気のある説明は、より扁状態を処理するステートマシンのセットを定義:状態マシンは状態マシンが一つの状態にあるときに実行が完了した後、それは、動作イベントを受信して​​実行することができる定義された状態の集合、状態機械を含みます状態の変化を知覚することができます。通常、次の概念が含まれています。

  • 私はあまりにもナンセンス状態、何の状態は、ステートマシンのステートマシンを呼び出すことはできません。
  • 状態イベントステートマシンの変更が生じたイベントによってトリガされなければなりません。
  • 行動は、ビジネスロジックの実行後にトリガ。たとえば、未払い状態のビジネスを支払うために注文の状態を変更することは、水を書き、行く口座残高を変更する必要があります。
  • 状態変化事象は、他のプロセスの状態に到達するために特定の動作を実行するようにトリガされます。

1786d6c5729de8738d2eeb8bb3fbbe49.png

図は、変更の概略プロセスです。別のJavaが列挙言うために次のこと。

Javaの列挙

Javaの列挙型は、クラスの一つの定義の定数のリストの特殊なタイプです。これは、JDK 1.5で導入された新機能です。私たちが終わったときにJDKで列挙が実際には、シングルトンとして設計されています、外部からインスタンス化することを許可されていない、助けの列挙型は、その負荷のJVMでインスタンス化されています。これは明らかに、セキュリティスレッドを確保するために定義されたJava仮想マシン仕様です。Javaの列挙型は、暗黙的に列挙スーパークラスjava.lang.Enumを実装し、したがって別のクラスを達成することはできないが、インターフェイスを実装することができるからです。あなたは、特定の内部列挙によって実装抽象メソッドを宣言することができます。私たちは、見て色の列挙を定義します。

96946720c5e689dcefa9c25dc0501491.png

我々はできるColorful.RED.colorName()、直接、非常に便利で、セマンティック色の名前を取得します。

次に、我々はビジネスを処理するためのステートマシンの簡単な列挙型を達成するために、実際のシーンを開発します。

戦闘操作

このシナリオの受領するための配信は、単純に次のシナリオを検討してください。

68f550216ebb615fe4a4d77b0d596054.png

この単純なプロセスの受信に最終的な配送を受ける予定の、我々は、状態の列挙のように定義することができます。

91cfaad5231a51143a78e155d2c5c80c.png

自分自身にその受信状況nextStateポイントを終了するようにスケジューリングは、自分自身にメソッドprevStateポイント初期状態であるため。2つのポインタによって定義されたプロセスの操作を実行するために必要。もちろん、実際の生産を行うのは、あなた自身のビジネスを結合します。

その後、我々はオーダーフロー(ゲッターとセッター省略)のようなものをやってます。

91cfaad5231a51143a78e155d2c5c80c.png

のは、簡単なテストを見てみましょう:

8da6c5308d0105cc45ad62a3f9e8d421.png

2の転送後、商品が買い手の成功の手に届く、状態が変更する権利を持っていたし、メンテナンス性にものみ列挙プロセスを変更する必要があることが保証されています。さて、今日ここに、私は多くの注目を願っています。

おすすめ

転載: juejin.im/post/5d664467518825776118b555