私はある種類の戦略パターンを実装しようとしていますが、戦略インターフェースを というように汎用化する方法がわかりません。戦略パターンに関する設計上の問題
以下の私のサンプルコードを参照してください。
ここpublic interface ISerializer
{
XDocument Serialize(PharmacyProductDto presetDataDto);
XDocument Serialize(PatientDto presetDataDto);
PrescriberDto Deserialize(PrescriberDto xDocument);
}
public class XmlSerializer : ISerializer
{
public XDocument Serialize(PharmacyProductDto presetDataDto)
{
return new XDocument();
}
public XDocument Serialize(PatientDto presetDataDto)
{
return new XDocument();
}
public PrescriberDto Deserialize(PrescriberDto xDocument)
{
return new PrescriberDto();
}
}
public class PatientDto
{
}
public class PrescriberDto
{
}
public class PharmacyProductDto
{
}
あなたはISerializerは基本的に異なるのDTOをシリアライズしていることがわかります。 XmlSerializerクラスは、多くの型をシリアル化するので、非常に面倒なものになります。また、今後いくつかのタイプを追加する予定です。
ここで戦略パターンを実装することを考えました。このような何か:
public interface ISerializerStrategy
{
XDocument Serialize(PatientDto presetDataDto);
PatientDto Deserialize(XDocument xDocument);
}
public class PatientDtoSerializerStrategy : ISerializerStrategy
{
}
public class PrescriberDtoSerializerStrategy : ISerializerStrategy
{
}
しかし、あなたはISerializerStrategy
はPatientDto
に非常に具体的なであることがわかります。このインターフェイスを抽象的または汎用的にするにはどうすれば PrescriberDtoSerializerStrategy
でも動作しますか?
誰かが私に提案できますか?
は常にXMLにシリアライズシリアライズのでしょうか? – Nkosi
@Nkosi:はい。私はマイケルの助けが私が探しているものだと思う。しかし、私の古い実装では、私はインターフェイスを注入するために使用するので、今ではジェネリックインターフェイスと私はそれを使用する方法がわからない –