問題タブ [value-objects]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
995 参照

domain-driven-design - ドメイン間で値オブジェクトを共有することは良い考えですか?

システムに Orderdomain と Customerdomain という 2 つのドメインがあるとします。

どちらのドメインもかなり複雑で大きいため、1 つのドメインに統合することはできません。

しかし、それらの間にはビジネス上の関係があります。各注文で、顧客は注文者として行動します。

私の頭の中には、少なくとも 3 つの解決策があります。

  1. Order と Customer の両方で、customerId をプリミティブ型として格納します。

  2. OrderDomain.CustomerId と CustomerDomain.CustomerId の 2 つの値オブジェクトを作成します。これらの型が等しいかどうかを比較できることを確認してください。

  3. valeobject CustomerId を使用して 3 番目のコンポーネント「SharedValueObjects」を作成し、そのタイプを両方のドメインで使用します。

どちらが優先されますか、それとも 4 番目に優れたものを考え出すことができますか?

0 投票する
1 に答える
92 参照

c# - 値オブジェクトのコレクションを使用したコンポーネントのマッピング

プロパティvalue object (component)を含むものを (xml ベースのアプローチを使用して) マップするにはどうすればよいですか?ISet<String>

ありがとう!

0 投票する
2 に答える
4819 参照

php - PHP の値オブジェクトの例は何ですか?

値オブジェクトの C# の例をたくさん読んだことがありますが、値によって識別されるのは「オブジェクト」であることを理解しています。値が変更された場合、オブジェクトは「新規」です。

しかし、それはPHPに関しては意味がないようです...それか、私が接続していないだけです。

値オブジェクトは単なる文字列ですか?

0 投票する
3 に答える
467 参照

database - データベースから Flex VO を生成する方法

内部に実際のデータを含むデータベースが既にあります。次に、その上に Flex-Java を構築します。私たちは、Hibernate ツールを使用してデータベースから Java コードを生成/リバース エンジニアリングする方法を知っています。問題は、VO アクション スクリプトをどのように生成するかです。Hibernate が DB から POJO を生成するように、アイデアは単純です。

注: Adob​​e のデータ モデル駆動型のアプローチを試しましたが、気に入りませんでした。

0 投票する
2 に答える
240 参照

domain-driven-design - これらの値も値オブジェクトですか?

値オブジェクト(概念的なアイデンティティがなく、属性のセットがその定義など)とエンティティとの違いは理解していると思いますが、プリミティブ型( intstring ...)の値かどうかはまだわかりません。エンティティのプロパティに直接割り当てられていることもVOと見なされます。

たとえば、次のコードでは、に割り当てられた(タイプのName)オブジェクトPerson.NameVOですが、に割り当てられた値でありPerson.FirstNameVOPerson.LastNamePerson.Age見なされますか?

ありがとうございました

0 投票する
3 に答える
553 参照

domain-driven-design - 次のモデルでは、アドレスは値オブジェクトであるべきではありませんか?

値オブジェクトはどのようにデータベースに保存されますか? :

Company と Person の両方が同じメール アドレスを持っているとします。これらのステートメントのうち、有効と考えるものはどれですか?

   1.「Company.Address を変更した場合、Person.Address にそれらの変更を自動的に取得させたい」

   2.「Company.Address を変更しても、Person.Address に影響を与えてはなりません」

1 が true の場合、Address はエンティティである必要があります

2 が true の場合、Address は値オブジェクトである必要があります。

上記のモデルでは、メールAddressValue ObjectCompanyにするべきではありませんか?同じメールがあったとしてもPerson、このメールにはまだ概念的なアイデンティティがないからです。

つまり、最初にinitial.address@gmail.comCompanyPerson共有し、その後new.address@gmail.comで新しいメールを取得した場合、代わりにメール アドレス initial.address@gmail.com自体は変更されていないと主張できます。 new.address@gmail.comに置き換えましたか?CompanyPerson

したがって、私の理解では、共有されている単なる事実Addressは、それに個性 (つまりアイデンティティー) を与えるのに十分ではありませんか?!

ありがとうございました

0 投票する
1 に答える
164 参照

domain-driven-design - 2つの並列集計、エンティティ、値オブジェクト階層のモデリング

私が理解しているように、DDDの概念に適合しない継ぎ目がある次のドメイン設計に苦労しています。

一方では、Device-> Sensor-> Measurement階層があり、ルートとしてDevice、エンティティとしてSensor、VOとしてMeasurementを使用したAggregateとしてモデル化されています。ここまでは順調ですね。

現在、センサーと同様に、各デバイスにはタイプがあります。同時に、測定値とは、測定された変数(温度など)を指します。ここで物事がバラバラになります。

最初は型を値オブジェクトとしてモデル化しましたが、型のセットは限られており、多くのデバイスとセンサーが同じ型を共有しています。

次に、デバイスの集合体と同様の構造に従って、それらを集合体としてモデル化することにしました:DeviceType->SensorType->Variable。ただし、SensorsがSensorTypeおよびMeasurement to Variableを参照する可能性があるため、これは機能せず、別のアグリゲート内からのアグリゲートのルートへの参照のみを許可するというルールに違反します。さらに、複数のDeviceTypeに同じタイプのセンサー(バッテリー充電センサーなど)が含まれている場合や、複数のセンサーが同じ変数(バッテリー充電レベルなど)を測定している場合もあります。

これにより、これらのエンティティ(DeviceType、SensorType、Variable)のそれぞれを、それぞれ独自の(縮退した)独立したエンティティとして持つことになります。

私の具体的な質問は、Aggregate、Entity、VOの概念を正しく解釈したか、またはルートのみがアンチパターンであるような貧血の集合体を持っているかということです。

0 投票する
1 に答える
827 参照

c# - オブジェクトの状態を履歴リストに保存して復元するためのベスト プラクティスは何ですか?

次のシナリオがあります。

シリアルポートなどを介して一部のコンピューター外部デバイスと通信する MVVM アプリケーションを設計しています。すべてDeviceには、ID、名前などのいくつかのプロパティがあり、さらにModule独自のプロパティを持つさまざまな で構成されています。デバイスを保存およびロードするための一種のxmlデータベースがあります。それぞれDeviceに独自のファイルがあります。ともかく:

アプリケーションは、すべてのファイルをリポジトリの種類ごとにロードし、Devices実際に接続されているものを選択するためのリストを提供するか、新しいものを作成します。現在の を選択すると、デバイスのタイプに基づいたDeviceのリストを表すページが表示されます。Modulesすなわち:

Device_Type_AModule_Aと_Module_B

Device_Type_BModule_Aと_Module_C

...

のプロパティは、Modules通信を介して入力されます。Modulesここで、現在のデバイスの xml ファイルに、一種のモジュール状態履歴の状態を保存したいと考えています。

これを行うためのベストプラクティスは何ですか? Fowlers SnapshotModuleSnapshotに基づいてクラスを作成して保存すると便利ですか? それとも、一種の不変値オブジェクトを作成してファイルに保存する必要がありますか?

デバイスはエンティティですが、モジュール履歴エントリは値オブジェクトのように感じます。読み込んだデバイスファイルの履歴も表示したい。Module通信用のモデルとしてのクラスと、そのような不変値オブジェクトのコピー用のクラスが必要ModuleHistoryですか?

このようなもの?

0 投票する
1 に答える
352 参照

design-patterns - Dでの値オブジェクトパターンの実装

Dに値オブジェクトパターンを実装したい。つまり、不変オブジェクトへの可変参照変数が必要だ。T変数は割り当て可能である必要がありますが、Tオブジェクトは決してその状態を変更してはなりません。

constDとの違いについて混乱しています。スケルトンクラスimmutableで私の疑問を説明しましょう。Rational

と宣言する必要がnumありdenますconstimmutable?整数に違いはありますか?

invariantまたはとして宣言する必要がありますconstimmutable?マークを付けるとimmutableコンパイル時エラーが発生しますが、他のメンバーがマークされていないことが原因である可能性がありますimmutable

コンストラクターをまたはとして宣言する必要がありconstますimmutableか?それはどういう意味ですか?

toStringまたはとして宣言する必要がありますconstimmutable

個々のメンバーにマークを付ける代わりに、クラス全体にマークを付けることもできるようです。

これらのうち、値オブジェクトパターンに最も適しているのはどれですか?

どうpureですか?値オブジェクトパターンでは、メソッドに副作用がないようにする必要があるため、すべてのメンバーを次のように宣言するのは理にかなっていpureますか?残念ながら、純粋ではないため、としてマークを付けるとコンパイルtoStringされません。その特別な理由はありますか?purestd.string.format

クラス自体をとして宣言することもできるようですが、コンパイラが不純な関数の呼び出しpureについて文句を言わなくなったため、効果がないようです。toString

そのときクラスを宣言するとはどういう意味pureですか?それは単に無視されますか?

0 投票する
2 に答える
430 参照

domain-driven-design - DDDグローバル値オブジェクト

いくつかのオブジェクトでTimePeriod(AM、PM、NIGHTなど)参照が必要です。例えば。ScheduledMeeting、ActualMeeting。

TimePeriodはIDを使用してデータベースにありますが、変更されないため、エンティティではありません。また、「AM」期間はすべてのオブジェクトで同じです。

私の難しさは、データベースからこの値オブジェクトを取得する方法を知ることです。異なるオブジェクトがそれを参照できるので、それはそれらのリポジトリメソッドの一部であってはなりませんが、同時に、それはルートではないので、それ自身のリポジトリを持つべきではありません。

では、これをデータベースから取得することをどのように推奨しますか?

ありがとう。

アップデート

複数のグローバル値オブジェクトに対して複数の小さなリポジトリを設定するという考えはあまり好きではありませんが、期間はDBからリポジトリを介して戻ることができると彼が説明したので、私はeulerfxの答えを選びました。このエリアはまだ少し灰色に感じます。