除了策略模式之外,您还可以为每个底层解决方案创建一个适配器。然后使用策略来改变它们。我构建了类似的每个报告解决方案都由我称为引擎的支持,除了可变报告解决方案之外,我们还有可变存储解决方案 - 输出可以存储在 SQL 服务器或文件系统中。我建议使用容器,然后使用正确的引擎对其进行初始化,例如:
public class ReportContainer{
public ReportContainer ( IReportEngine reportEngine, IStorageEngine storage, IDeliveryEngine delivery...)
}
}
/// In your service layer you resolve which engines to use
// Either with a bunch of if statements / Factory / config ...
IReportEngine rptEngine = EngineFactory.GetEngine<IReportEngine>( pass in some values)
IStorageEngine stgEngine = EngineFactory.GetEngine<IStorageEngien>(pass in some values)
IDeliverEngine delEngine = EngineFactory.GetEngine<IDeliverEngine>(pass in some values)
ReportContainer currentContext = new ReportContainer (rptEngine, stgEngine,delEngine);
然后 ReportContainer 将工作委托给依赖引擎...