【发布时间】:2011-02-05 09:26:25
【问题描述】:
可能重复:
StructureMap singleton usage (A class implementing two interface)
我目前正在设计一个小型系统,并且我目前正在使用 structureMap 作为 IoC。我最近才明白接口隔离的意义……我现在想知道。
如果我有一个特定的业务对象,它将实现三个接口......我应该如何在代码的配置和实例化中处理这个?
假设我在一个简单的场景中有两个接口,用于一个名为 EmployeeServiceObject 的服务层类。 IGenericEntity 和 IEmployeeServiceObject。
GenericEntity 将为类提供 CRUD 功能,而 IEmployeeServiceObject 将为业务查询/操作提供结果集。
如果在外观/服务层方法上,我必须使用 EmployeeServiceObject 类并实际使用两个接口的功能...应该如何处理?
最初我认为正确的做法是设置 IoC 的配置以将 IEmployeeServiceObject 映射到 EmployeeServiceObject,向工厂询问对象,然后在需要使用 CRUD 功能时将其转换为 IGenericEntity,但我不太确定。这似乎也不正确,因为我永远不会正式声明具体类实际上正在实现未在 ioc 容器配置中设置的接口。
我当然知道创建同一个具体类的两个实例但要求不同的接口...听起来更糟。
应该如何处理?
【问题讨论】:
-
您好,我不知道如何在 StructureMap 中执行此操作的详细信息,但是您应该能够注册具有多个接口的类。然后,您可以设置单例范围以在请求任一接口时检索相同的实例。
-
感谢山姆。我不想知道如何仅在 StructureMap 上执行此操作。我正在寻找使用任何 IoC 容器处理此问题的方式……如何执行此操作的原理。
标签: design-patterns inversion-of-control structuremap ioc-container design-principles