SCADAデータベースの回りにラッピングライブラリを作成しています。私は小さなヒッピーコードデザインの質問を受け取りました。これは、提供されたDBオブジェクトをPOCOに変換する方法を含みます。単一のタイプから別のPOCOを作成する
ベンダーの.NETライブラリを使用してDBを呼び出しています。
DBを呼び出すと、タイプDBObject
のオブジェクトが戻されます。これはデータベース内のあらゆるものを表すことができ、それが保持する情報には非常に一般的です。すべてのカスタム情報はDBObject.GetProperty()
メソッド呼び出しでDBからアクセスされます。これは、DBへの接続をアクティブにする必要があります。
私はこの基本的なDBObject
をさまざまな異なるPOCOに変換して、WCFやその他の技術を介してそれらを渡すことができます。
現在、私は基本、私はすべてのPOCOの含まれるようにするプロパティとPOCOへDBObject
からこの作成を行いInternalFromDBObject(DBObject obj)
と呼ばれる保護された仮想メソッドの数を持っていScadaObject
という抽象基底クラスを持っています。
派生した型では、このメソッドをオーバーライドして、最初の呼び出しでbase.InternalFromDBObject(obj)
を呼び出してから、カスタム/特定の情報を読み込みます。私はその後、そのPOCOの新しいインスタンスを返すFromDBObject()
と呼ばれるPOCOの静的メソッドを持っています。
これは良い方法ですか?工場を使うのは大変なことではありませんので、それが合うかどうかわかりません。私が使用できる他のデザインパターンはありますか?
は、私が持っているほとんどのアプローチと同じくらい痛いようです見た:( – leppie