最低限、永続化可能なビジネス オブジェクトに組み込む必要がある機能は何だと思いますか?
例えば:
- 検証
- 同じタイプの別のオブジェクトと比較する方法
- 元に戻す機能 (変更をロールバックする機能)
最低限、永続化可能なビジネス オブジェクトに組み込む必要がある機能は何だと思いますか?
例えば:
ドメインとビジネスによって決定される機能。
ドメイン駆動設計をお読みください。
永続化可能なビジネス オブジェクトは、次のもので構成されている必要があります。
多くの場合、機能を抽象化して、以下をサポートするリポジトリに取得します。
このタイプの機能をコレクション クラス (BusinessObjectTypeCollection など) にラップすることもできますが、これらのタイプのアクセサー (InvoicingRepository.GetAllCustomers、InvoicingRepository.GetAllInvoices など) を提供するために、ドメイン駆動設計でリポジトリ パターンを使用する動きが活発化しています。
ビジネス ルールを New、Save、Update、Delete ... に配置することもできますが、オブジェクトを渡す外部のビジネス ルール エンジンを使用することもできます。
これは答えの 1 つにすぎませんが、このオブジェクトが関係を持つすべてのオブジェクトにアクセスする方法が必要であると言えます。最初は賢く、一部の関係に対して一方向のナビゲーション機能のみを含めるようにすることもできますが、これは通常、価値があるよりも面倒なことであることがわかりました。
すべての永続的なフレームワークには、ファインダー、カスケード削除を行う方法、並べ替えも含まれています。
モデリングを開始すると、すべてのビジネス オブジェクトが自分自身を管理する方法を知る必要があります。ビジネス オブジェクトを過度に参照している別のクラスを見つけた場合は、通常、その動作をビジネス オブジェクト自体にプッシュする必要があります。
質問で指摘された 3 つのことのうち、本当に必要なのは検証だけだと思います。その他は、アプリケーションの全体的なアーキテクチャに依存します。
また、ビジネス ルールはビジネス オブジェクトに含まれている必要があります。
オブジェクトが独自のシリアル化を行うべきかどうかは興味深い問題です。私はこれまで、各オブジェクトに独自のシリアライゼーションを処理させることで大きな成功を収めてきましたが、シリアライゼーション モジュールがビジネス オブジェクトをロードし、GUI がオブジェクトから読み書きするのとまったく同じ方法でビジネス オブジェクトを保存することにも利点があると考えています。次に、検証により、データベースまたはファイルのエラーも保護されます。
一般的に必要なものは他に考えられません。