情景:
在A类中引发事件,需要由B组中的方法处理(目前通过代表)
从事件传递到方法的数据当前包含在C类中。
这显然要求B级依赖于C级
我是否可以执行任何技术/重构以消除这种依赖性?
e.g。将数据展开回简单的原始数据类型并直接传递它们。
答案 0 :(得分:5)
展开原语会起作用,但要确定你真的想要删除这种依赖。对于A类和B类来说,如果C是它们之间的桥梁,或者如果C为它们提供两者等,它们都依赖于C是完全有效的。
展开到基元会删除编译依赖关系,但不会删除数据依赖关系,并且实际上可能通过删除逻辑上需要的实体(C类)来“非规范化”设计
答案 1 :(得分:2)
我同意Steven Lowe;依赖可能是有效的。我能提供的唯一选择是依赖于界面而不是实际的类,但它几乎归结为同样的东西。
答案 2 :(得分:0)
正如大多数人所说,对C的依赖可能是有效的。
但是,如果依赖于C会给您带来问题,可能是因为C过于复杂或者依赖于过多的依赖关系。
如果在一个事件中传递了C类,它应该是一个没有自己的依赖项的POCO类,所以你可能要考虑重构它。
如果C有自己的复杂方法,那么它们实际上属于A类是一个很好的选择。
答案 3 :(得分:0)
你是否看过像Structuremap这样的依赖注入框架来至少集中这些依赖关系并使它们可配置?我没有尝试使用事件/委托类型,但如果你在图层周围传递了很多自定义类型/接口,那么它就是一个很好的工具。
答案 4 :(得分:-2)
您可以序列化为XML,而不是通过XPATH直接读取XML(不进行反序列化)