【发布时间】:2016-06-07 14:38:25
【问题描述】:
最初我只需要MessageQueueFactory创建一个队列:
container.RegisterSingleton<IMessageQueueFactory>(() => {
var uploadedWaybillsQueuePath = ConfigurationManager
.AppSettings["msmq:UploadedDocumentsQueuePath"];
return new MessageQueueFactory(uploadedWaybillsQueuePath);
});
现在需求发生了变化,因此需要支持多个队列。
我在这里能做的最简单的事情就是将其他路径(存储在app.config中)添加到工厂的构造函数中,并为每个队列提供方法:
container.RegisterSingleton<IMessageQueueFactory>(() => {
var uploadedDocsQueuePath = ConfigurationManager
.AppSettings["msmq:UploadedDocumentsQueuePath"];
var requestedDocsQueuePath = ConfigurationManager
.AppSettings["msmq:RequestedDocumentsQueuePath"];
return new MessageQueueFactory(
uploadedWaybillsQueuePath,
requestedDocsQueuePath
);
});
interface IMessageQueueFactory {
MessageQueue CreateUploadedDocsQueue();
MessageQueue CreateRequestedDocsQueue();
}
这是一个糟糕的设计吗?如何重构?
【问题讨论】:
标签: c# .net design-patterns dependency-injection simple-injector