我正在为系统设计一个新组件,尝试遵循有关 DI 的各种准则,以便我们在隔离、模拟等方面获得回报。
所以我有以下组件(说明为抽象):
- Fetcher - 支持 IFetcher,它从特定数据源获取数据。返回 IDataSource。
- Builder - 支持 IBuilder,它从 IDataSource 构建结构。
我想将它们包装在一个“Performer”(因为想要一个更好的名字)组件中,它会执行以下操作:
IDataSet Performer.Perform(IFetcher fetcher, IBuilder builder)
{
IDataSource ds = fetcher.Fetch();
return builder.BuildDataSet(ds);
}
为了遵守 Dependency Injection 和 LoD 指南(据我所知),我同时传入了 IFetcher 和 IBuilder 组件。
我的问题 - 这听起来像一个可以接受的设计吗?与工作同事的对话是“是的,听起来不错”,但不是 100% 相信 Performer 类的封装。
在我看来,Performer 是一个复合控件,它将几个不同的组件粘合在一起,这应该是可以接受的。唯一的问号是我是否应该有一个“Performer Factory”,但考虑到可以模拟实际组件(Ifetcher 和 IBuilder),这似乎有点过分了。
任何想法将不胜感激,谢谢。