私は自分の道を「頭の最初のデザインパターン」でやっていて、すぐにこれを実際に使いたいと思っています。 私はアプリケーションを他のアプリケーションと接続するコードを書いています。実際、XMLファイルを含む電子メールを生成して電子メールで送信する必要があります。しかし、将来は他のものが必要になるかもしれません。 - 伝送 のためのデータ - 送信する手段(電子メールかもしれないが、別のデータ交換のためのFTPやWebサービスすることができる)ジェネリックについての建築/ベストプラクティスの質問
:はこのように、私は「物事その変更」を識別しました
だから、私:
そしてSendViaMailは
のようなものです: - のDataObject 抽象クラスを作成しました - DataExchangeの抽象クラスを作成しました - インタフェースを作成したが をITransmissionMethodあなたがこのアプローチについてどう思いますかclass MyExchange : DataExchange<MyDataObject,SendViaMail> { }
: -
class SendViaMail : ISendMethod<System.Net.Mail.Attachment>
{
public override void Send(System.Net.Mail.Attachment dataItem)
{
throw new NotImplementedException();
}
}
今、私のようなクラスを作成することができますか?それは思いません
private abstract System.Net.Mail.Attachment PrepareObjectForSendingMyDataObject dataObject) {
// Serialize XML file and make it into attachment object
}
:今、私が本当にやりたいことはVisual Studioが似メソッドを実装するために私を強制する
private abstract [the type of the T in ISendMethod<T>] PrepareObjectForSending(T dataObject) {
}
ようになっているはずのDataExchangeでの抽象メソッドを作成しています甘い?しかし、あなたはこのアプローチについてどう思いますか?将来、人々は新しいデータオブジェクトと新しいsendメソッドを作成することができ、コードは引き続き動作します。私がしようとしてきたことは、インタフェースとプログラムを変更してプログラムを抽出することです。どうですか?
は私には少し不自然なようです。おそらく、送信メソッドに 'enum'を使うだけです。データオブジェクトを保持するためにジェネリックは必要ありません。 IMHOこれは、それ自身のために過度に複雑なコードの良い例です。 – Yuck
私はYuckと半分同意します。道路が変わる可能性があるからといって、それをサポートするために建築を建てるべきではありません。システムをセットアップして、必要になった場合にそのアーキテクチャに移行することは不可能ではなく、すべてを構築しないようにすることをお勧めします。 –
ここで書いたことから、ジェネリック医薬品の使用があなたを買うのを見るのは難しいです。 DataObjectとSendMethodの基本クラス/インターフェースを使う方が良いかもしれません。物事をより簡単にする場合にのみジェネリックを使用してください。 –