![]() |
1
3
你需要一些 默认实现 当模块A停用时,它可以接管。这个 Null Object 图案听起来很合身。 只需先用Unity注册您的NullServiceA。这将是默认的IServicea,除非被实际实现覆盖(我们称之为ConcreteServiceA)。 对于更复杂的实现,可以在 Composite 或者其他形式的 Decorator 根据可用性选择其中一个。 例如,您可以拥有一个始终使用注入到其中的第一个(或最后一个)IServicea实例的组合…或者,选择标准可以基于某种元数据来确定模块是被激活还是被停用(听起来信息本身可以很好地适应假设的IModule接口)。 |