問題タブ [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 投票する
10 に答える
39150 参照

domain-driven-design - 値とエンティティ オブジェクト (ドメイン駆動設計)

DDDを読み始めたばかりです。エンティティと値のオブジェクトの概念を完全に理解することはできません.値オブジェクトがエンティティオブジェクトとして設計されている場合にシステムが直面する可能性のある問題 (保守性、パフォーマンスなど) を誰かが説明できますか? 例は素晴らしいでしょう...

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

design-patterns - DDD - 値オブジェクト対。エンティティ オブジェクト

私は DDD が初めてで、いくつかの概念を理解しようと懸命に努力しています。ドメイン内でどのオブジェクトが Entity オブジェクトで、どのオブジェクトが Value オブジェクトであるかをどのように判断し、どのように正確に異なる扱いをするのでしょうか?

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

java - xsdスキーマからのActionScript値オブジェクトの生成

xsdスキーマで定義されたタイプ(他のxsdファイルが含まれる場合と含まれない場合があります)をActionScript値オブジェクトに変換するために使用できるツールはありますか?私はしばらくこれをグーグルしてきましたが、ツールが見つからないようです。そのようなツールを作成することで、値オブジェクトを手動でコーディングするよりも、今のところ時間を節約できるかどうかを考えています。

私が検討してきたもう1つの可能性は、XMLBeansなどのツールを使用してスキーマで定義された型をJavaクラスに変換し、それらのクラスをActionScriptで変換することです。しかし、私はそこに約数十億のjava-> as3コンバーターがあり、一般的な結論はそれらが一種の仕事であるように思われることに気づきました。つまり、どのツールが適しているかわかりません。

何かご意見は?

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

fluent-nhibernate - NHibernateのヌル値オブジェクト

値オブジェクトとしてアドレスを含む個人エンティティがあります。

NHibernateのドキュメントには、値オブジェクトのすべてのプロパティ(Address1、Address2など)がnullの場合、コンポーネント全体がnullとしてマップされる(つまり、Person.Addressがnullになる)と記載されています。これは、すべてのアドレスフィールドがnullの場合に問題を引き起こします。これは、私のページで(ASP MVCを実行している)次の理由で発生する可能性があるためです。

これはnull参照例外で壊れます。したがって、手動で行わずにデータベースからPersonをロードするときにすべてのフィールドが空の場合、Addressをnullではなく新しいAddress()オブジェクトとして設定するクリーンな方法を探しています。私は次のアイデアを割り引いた:

私の見解でヌルチェックを行う(yuk、恐ろしい)

データベースフィールドをnull許容不可にする(私はレガシーデータベースを扱っています)

誰かアイデアはありますか?

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

reference - 可変値オブジェクト / 状態の共有 (そしてビール醸造!)

私はさびついたプログラマーで、再び現場で学ぼうとしています。ふさわしく、独学と正式な教育の両方がいくつかの悪い習慣を引き起こしていることを発見しました. そういうわけで、私は良いデザイン パターン、ひいては、それらが間違っている場合について頭を悩ませようとしています。言語はJavaで、これが私の問題です:

ビール醸造を支援するソフトウェアを作成しようとしています。醸造では、レシピで求められているものを特定の種類のホップで代用しなければならないことがあります. たとえば、「アマリロ」ホップを必要とするレシピがあるかもしれませんが、代わりに十分に類似した香りを持つ「カスケード」しか得られません。ホップには(所定の質量あたりの)アルファ酸量があり、2 つのホップ間の比率は置換式の一部です。私は自分のプログラムでこれを(適切に)モデル化しようとしています。

私の最初の目的は、2 つのオブジェクトを持つことです。1HopVarietyつはさまざまなホップに関する一般的な説明情報を含む a で、もう 1 つHopIngredientは a の特定のインスタンス化であり、特定のHopVarietyレシピで使用される量も含まれます。HopIngredientその多様性についての知識が必要であり、そのHopVariety代わりに何が使用できるかについての知識が必要です (すべての置換が対称的であるとは限りません)。これは良いOOPのようです。

問題はこれです: 私は良い習慣に従い、値オブジェクトを不変にしようとしています。(私の頭では、 and を「アクター」ではなく値オブジェクトとして分類HopVarietyHopIngredientています。)ただし、ユーザーが特定の HopVariety を新しい実行可能な置換で更新できるようにする必要があります。不変性に従うと、これらの変更は個々の成分に伝播しません。可変性を選択した場合、可変値オブジェクトを共有することで副作用が発生する可能性があるため、動作がおかしくなりました。

したがって、オプション B: ある種の VarietyCollection を導入し、名前または一意の識別子を使用して材料と品種を緩やかに結合します。そして、VarietySubstitutionManager は、品種が他の品種への参照を保持せず、ID のみを保持するようにします。多様性オブジェクトへの参照を保持することは直感的に理にかなっているため、これは私がやりたいこととは反対です。そして今、過剰なレベルの抽象化のように感じるものを導入し、関数をデータから分離しています。

では、特定のインスタンスに相当するものの間で状態を適切に共有するにはどうすればよいでしょうか? 問題を解決するための適切な、または少なくとも最も健全な方法は何ですか?

0 投票する
6 に答える
4576 参照

domain-driven-design - DDD、値オブジェクト、ORM

値オブジェクトには ID がありません。ORM には、データベースを更新するための ID が必要です。

ORMをだます方法は?

(ORM は別のアセンブリにあり、同じアセンブリに移動することはできないため、値オブジェクトの Id を internal としてマークしても機能しません)。

前もって感謝します。

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

nhibernate - NHibernate の値オブジェクトの別の表

私はDDDとNHibernateが初めてです。

私の現在のプロジェクトでは、値オブジェクトを含むエンティティ Person があります。たとえば、Address としましょう。今日は、これでいいです。しかし、いつの日か、私の値オブジェクト (この場合は Address) がエンティティーにならなければならないという要件が生じるかもしれません。

これを DDD 方式でモデル化する前に、よりデータ中心のアプローチで、ID を持つテーブル Person と、別のテーブル Address があり、その PK は実際には FK であり、それは Person の ID (つまり、 、1 対 1 の関係)。

値オブジェクトをコンポーネントとしてマップすると、その値がエンティティ テーブルの列としてマップされることを読んでいます (したがって、1 対 1 の関係はありません)。

私の考えでは、必要に応じて代理キーを Address テーブルに追加するだけで、それが Entity になるというものでした。

NHibernate を使用してこれをどのように設計すればよいですか? Address オブジェクトをエンティティにする必要がありますか?

申し訳ありませんが、私の質問が明確かどうかさえわかりません。ここで本当に迷っています。

0 投票する
5 に答える
1155 参照

java - EnumMapは、Java Beanの合理的な代替手段と見なされる可能性がありますか?

Java Bean、特に「値オブジェクト」(動作なし)の代わりにEnumMapを使用することを検討している人がいるかどうか知りたいですか?私には、「プロパティ」の名前がバッキング列挙型から直接アクセスでき、リフレクションを必要としないという利点があるように思われるため、より高速になると思います。