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