【发布时间】:2020-03-08 03:42:27
【问题描述】:
我已经实现了策略模式。我有一个基本接口,并且将选择我将在运行时使用该接口的哪个实现。问题是,我不知道有一种优雅的方式可以填充一个对象来存储我的所有实现,而无需像这样对它们进行硬编码(更新它们):
public class FixMessageFormatter
{
List<IMessageFormat> _messageFormats = new List<IMessageFormat>{ new MassQuoteMessageFormat(), }
// ... Other code.
}
这并不优雅。如果我有超过 50 个 IMessageFormat 的实现,这会很快变得丑陋。我听说过依赖注入,但不确定如何将它应用到这个简单的示例中。
对于上下文,以下是我的接口和单个实现。
界面
public interface IMessageFormat
{
List<FixMessageType> MessageType { get; }
bool IsProperType(FixMessageType fixMessageType);
StringBuilder FormatMessage(FixMessage fixMessage);
}
实施
public class MassQuoteMessageFormat : IMessageFormat
{
public List<FixMessageType> MessageType => new List<FixMessageType>{ FixMessageType.MassQuote };
public StringBuilder FormatMessage(FixMessage fixMessage)
{
var stringBuilder = new StringBuilder();
// ... Code
return stringBuilder;
}
public bool IsProperType(FixMessageType fixMessageType)
{
return MessageType.Contains(fixMessageType);
}
}
【问题讨论】:
标签: c# dependency-injection strategy-pattern