假设我有两个设置(为了简单起见)改变了我的类型在可重用库中的行为。
我可以定义一个配置类:
class Config {
public bool Behaviour1 { get; set; }
public bool Behaviour2 { get; set; }
}
如果我这样做,我必须将实例从组合根(无论是否使用 IoC 处理)传播到整个层次结构。
代码将被大量条件语句侵入,降低可读性、可维护性和可扩展性。
定义两种行为类型不是更好吗?
public class Behaviour1 : IBehaviour1 {}
public class Behaviour2 : IBehaviour2 {}
删除其他类型从Config
. 比每个需要行为的类都依赖于IBehaviourX
它的工厂,它的工厂将根据Config
类型注入适当的具体。
这样,只有少数顶级类型将取决于 Config 并且分配行为的行为(请原谅双关语)不会传播到整个层次结构。
在这种情况下,我对您的解决方案感兴趣。