通常、C#でプログラミングするときは、ドメイン主導の原則の後に私のプロジェクトを設計します。私はObjective C for iPhoneでプログラミングを始めたばかりで、Objective Cのドメイン駆動型デザイン原則を使用するサンプルプロジェクトやコードがあれば疑問に思っていました.Business Objectsなどの使用例を探しています。ありがとう。目的Cドメイン駆動型設計
答えて
ドメイン駆動設計の原則が誤っている可能性があります。 DDDは一連のガイドラインであり、どのように考え、どのように問題にアプローチするかについては、ほとんどがテクノロジーにとらわれないものです。 Objective Cコードを書くと、技術の代わりにドメインによってデザインが動かされることはありません(個人的には、私の考えではより読みやすいコードのために引数に名前を付ける必要があります)。
あなたの質問は、DDD:ORM、DI、単体テストを通常サポートする(ただし、定義しない)技術に関するものです。そして、この部分はとても良いIMHOではありません(短くて比較的古い経験に基づく)。 ORMを使用する代わりに、通常、オブジェクトグラフの永続性を持つCore Dataを採用しています。これは、「リレーショナル」部分を扱わないため、理論的にはさらに良いと思われます。しかし、私は、Core Dataが他の環境では避けたいと思っていた私のオブジェクトモデルに一定の制限を課すことを覚えています。 DIについて話すことはできませんが、単体テストは痛み(2010年)でしたが、それはまだ2012年になっていると聞いてきました。
結論はあなたの質問に精緻化し、 Objective-Cセクションにあります。
私はC#のバックグラウンドからも来て、ObjCに入社して半年を経た後、私はObjective-CでDDDの原則を完全に守っていることは間違いありません。部分的には、言語の静的/動的ハイブリッド小規模な性質のためです。
たとえば、私が何を意味するのかわかっていれば、DIと単体テストを非常に簡単にするいくつかのメソッドをオーバーライドするだけで、オブジェクトに送信されたメッセージ(傍受メソッド呼び出しとも呼ばれます)を非常に簡単に呼び出すことができます。
さらに、grand central dispatchは、ドメイン間のコミュニケーションを容易にするために使用できるシステム間での非常に優れた分離メッセージを作成します。
最後に、基本フレームワークでのkey-value observingの規約により、ドメインオブジェクトをユーザーインターフェイス要素に簡単に接続し、変更をリアルタイムで反映させることができます。
サービスオブジェクトを直接操作するのではなく、その状態を変更するドメインオブジェクトの1つにコマンドを送信します。これらの状態は、あなたのコントローラが(KVOメカニズムを介して)変更を観察することによって容易に戻って反映されます。
したがって、ObjCではDDDの原理に従うことが完全に可能です。
例として、私は一度も見たことがありません。しかし、C#プロジェクトで使用するのと同じ構造(コピーはしませんが、同様にモデル化します)を使用するのは確かに難しいことではありません。私が言及した技術を勉強することはあなたにも役立ちます。
アンチDDD CoreDataがどのようにしているのか誰も言及していないことに私は驚いています。 CRUDスタイルのアプリでも、私は常にDDDスタイルをコーディングしようとします。最初に気づくのは、Cocoa全体、特にMac上でのCoreDataの広範な使用です。
XCodeとCocoaは、バインディングに沿ってCoreDataの使用を促進します。しかし、CoreDataは常にドメインモデルではなくデータベースにコード化しています。実際、データベース全体の移行を強制することなく、単一のドメインオブジェクト属性の名前を変更することはできません。
Cocoaを学んでいる場合、多くのアプリやサンプルコードがCoreDataに依存しているため、CoreDataを習得する必要があります。後で、フレームワークの知識が深まるにつれて、自分のプロジェクトで通常行っているドメインモデルが本当に必要な場合は、CoreDataを完全に削除することもできます。
これも問題だと思います。 'ManagedMovie'をフェッチしてその属性をコピーするCore Data-backedリポジトリによって作成されたドメインモデルオブジェクト 'Movie'は、'管理された 'モデルを使用してドメインオブジェクトを作成することはあまりにも面倒です。コアデータはインフラストラクチャの一部であり、ドメイン自体に余裕がない。それをどうやって解決しますか? – ctietze
- 1. ドメイン駆動型設計のエンティティ
- 2. イベント駆動型設計ツール
- 3. ドメイン駆動型設計におけるルートアグリゲートの問題
- 4. ドメイン駆動型設計の原則に適用するベストプラクティス?
- 5. IoCコンテナとドメイン駆動設計
- 6. ドメイン駆動型デザインのレイヤー
- 7. ドメイン駆動型設計における集約ルートの複雑さ
- 8. ドメイン駆動型設計の各ルート集約エンティティ用の1つのリポジトリ
- 9. ドメイン駆動型設計では、工場クラスでインフラストラクチャにアクセスできますか?
- 10. ドメイン駆動型デザインのMVC .NETフォーム
- 11. Doctrineをドメイン駆動設計で使用する
- 12. ドメイン駆動設計:集約ルートごとのリポジトリ?
- 13. ドメイン駆動設計:ワークフローロジックはどこにありますか?
- 14. ORMを使用したドメイン駆動設計
- 15. C#でのドメイン駆動型開発 - サンプルWebアプリケーション
- 16. データ駆動型Silverlight WP7アプリケーションのアーキテクチャ設計
- 17. 大規模なエンタープライズアーキテクチャでドメイン駆動型設計が崩壊するのは私だけですか?
- 18. 集約ルートがドメイン駆動型設計でインターフェイスを実装する必要があります
- 19. ドメイン駆動型設計でサービスをどのように実装する必要がありますか?
- 20. エンティティがコンテナにコンテナを追加するエンティティを複製するとき、ドメイン駆動型設計では?
- 21. メッセージ駆動型とアプリケーション統合型のイベント駆動型アプローチ
- 22. ステートパターンとドメイン駆動デザイン
- 23. ドメイン駆動のプログラミングとイベント
- 24. C#によるセレンデータ駆動型テスト
- 25. ドメイン駆動型デザインクラスへのアクセスWCFサービスのライブラリ
- 26. 単純ドメイン駆動型デザインの貧血モデルとドメインモデル
- 27. ドメイン駆動型デザインが混乱しています
- 28. エンティティとNHibernateの永続性を含むドメイン駆動型デザイン
- 29. ドメイン駆動型デザインでの外部Webサービスの使用
- 30. .NETでドメイン駆動型デザインを適用するベストプラクティス?
downvoterは説明してくれませんか? – Dmitry
返事をありがとう。 – user1167865