我创建了一个支持应用程序的库,但是在最新版本的应用程序中,开发人员在不更改类名的情况下更改了结构。
因此,应用程序的版本1在包A中具有classX,但版本2在包B中具有classX。如何以允许在同一版本中支持这两者的方式开发我的库?
编辑:我的库依赖于应用程序,而不是相反。
答案 0 :(得分:1)
这是一个错误的决定,如果你仍然想让它工作,你需要提供具有旧结构的骨架类,并将调用委托给新版本的类,但它会非常脏
如果您对重命名决定非常坚定, 更好地提供向后兼容性
答案 1 :(得分:0)
简答:你不能。
真实答案: 您的库应该能够独立于任何使用它的应用程序而存在。库的目的是提供一组可重用的模块化代码您可以在任何应用程序中使用。如果您的库直接依赖于应用程序类,那么似乎应该认真考虑重新设计,因为您的依赖项是倒退的。例如,让A.classX
和B.classX
都实现您的库提供的某个接口(或扩展某些类),然后让应用程序传递这些对象的实例,或{{ 1}}'用于那些对象,到库。
如果您的"库"不能以这种方式设计,然后考虑将其集成到应用程序代码中,使其成为应用程序的直接部分,并为您,其他开发人员和其他人一起为同一项目开发更好的团队工作流程
快速修复答案:不要提供向后兼容性,正如Jigar Joshi在his answer中所述。
错误回答:如果你真的不得不,你可以和反射一起破解脆弱的解决方案。但请注意"真正的答案"从长远来看会持续下去。您已经看到了当前所选设计的问题(因此您的问题),而基于反射的解决方案并不能防止再次发生(甚至是可靠的)。