2016-11-20 8 views
-1

私はすべてのオブジェクトが不変であるべきであることを理想的に読んでいます。しかし、注文や貿易のようなものがあるとしましょう。例えば、注文が成立したときや取引が実行されたときに状態が変わるのですか?このような現実世界の実体を表現するための不変オブジェクトの使用を検討したことは一度もありませんでした。注文オブジェクトまたは取引オブジェクトの場合、不変オブジェクトをどのように使用できますか?

答えて

0

不変のデータ構造では、オブジェクトを変更するたびに、実際には古いものがそのまま残ります。更新されたオブジェクト以外の古いオブジェクトとすべてのプロパティを共有する新しいオブジェクトを受け取る

+0

しかし、複数のスレッドが同じオブジェクト上で動作しているように見える - ユーザーが取引をキャンセルしてブローカが実行する可能性がある貿易 - これは、あなたが貿易の一生を通して一つの物を望むことを意味していると思います。 – Jeff

+0

不変オブジェクトの利点の1つは、そのアイデンティティがその状態であることです。何らかの方法で注文を処理しないようにしたい場合は、完成した注文をセットまたは他のものに格納することができますデータ構造を変更し、注文が完了注文のセットに含まれているかどうかを確認するだけで、変更する必要のあるフィールドを持つ必要はありません。 – chatton

+0

@chatton:このデザインのアカウントの未処理注文のリストはどうなりますか?元のオーダーは削除され、新しいオーダーが完成したリストに追加されますか? – Jeff

関連する問題