2016-03-28 9 views
2

私は、タスクの数を行い、シングルトンクラスを持っている:シングルトンに対してステートマシン図を描画できますか?

  • は、位置情報の更新を受け取るためのリスナーを登録します。
  • リスナーを登録解除します。
  • リスナメソッドが呼び出された場合にAPI呼び出しをトリガします。

私はクラスのステートマシン図を描きたいが、シングルトンのためにそうすることが正しいかどうかを疑問に思いました。

答えて

3

シングルトンインスタンスが他のインスタンスと異なる必要があるのはなぜですか?シングルトンパターンはコンストラクタをプライベートにするだけで、getInstance()操作で取得したインスタンスは1つしか存在できません。

UMLのクラスを「アクティブなクラス」としてモデル化し、そのクラスが「決して」終了しないという自律的な振る舞いを持つことを宣言することを検討する必要があります。アクティブオブジェクトは、その作成の直接の結果として、そのclassifierBehaviorを実行するために開始する、オブジェクトであり、完全な動作のいずれかを実行またはオブジェクトされるまで停止しない

:UML 2.5仕様で説明したようにいくつかの外部オブジェクトによって終了されます。アクティブオブジェクトが他のオブジェクトからの通信に応答するポイントは、アクティブオブジェクトの動作によってのみ決定され、呼び出すオブジェクトによっては決定されません。アクティブなオブジェクトのclassifierBehaviorが完了すると、そのオブジェクトは終了します。

+0

「アクティブでないオブジェクト」は何でしょうか?すべてのクラスは、いずれかの方法で終了するまでインスタンス化され、存在します。 -/ –

+0

アクティブでないオブジェクトは、クラスのメタ属性isActiveがfalseであるオブジェクトです。非アクティブなオブジェクトは、別のオブジェクトがそれを呼び出すときにのみCPU時間を取得します。対照的に、アクティブなオブジェクトは、作成されるとすぐにそれ自身のスレッドで実行を開始します。そのスレッドでは、オブジェクトはステートマシンを実行してシグナルを処理できます。 –

+0

上記の_Active class behaviors_に関する段落は私を完全に混乱させました。このUML仕様は品質が悪いです。 –

2

もちろん可能です。その人はもう片方と何かをする必要はありません。シングルトンとは、インスタンスが1つだけ存在することを意味します。これで、ステートマシンは、達成したいことに応じてこの事実を尊重したり無視したりすることができます。

+0

ダイアグラムには終了状態がありますか?シングルトンは決して破壊されないので。 – harveytoro

+0

終了状態がない場合は、そのシンボルは必要ありません。しかし、シングルトンは破壊される可能性があります。それはただ一つのインスタンス(一度に死ぬかもしれない)を持っています。あなたは無限の状態マシンについて話しています。 –

関連する問題