我创建了一个支持应用程序的库,但是在该应用程序的最新版本中,开发人员在不更改类名的情况下更改了结构。
因此,该应用程序的版本1在程序包A中具有classX,而版本2在程序包B中具有classX。我如何以允许在同一版本中同时支持这两个程序的方式来开发我的库?
编辑:我的库依赖于应用程序,而不是相反。
最佳答案
简短的回答:不能。
真正的答案:您的库应该能够独立于使用它的任何应用程序而存在。库的目的是提供可以在任何应用程序中使用的一组可重用的模块化代码。如果您的库直接依赖于应用程序类,则似乎应该认真考虑重新设计,因为您的依赖关系是向后的。例如,让A.classX
和B.classX
都实现库提供的某些接口(或扩展某些类),然后让应用程序将这些对象的实例或这些对象的Class
实例传递给库。
如果无法以这种方式设计“库”,请考虑将其集成到应用程序代码中,使其成为应用程序的直接组成部分,并为您,其他开发人员和其他人提供更好的团队工作流程同一项目。
快速解决方案答案:不像Jigar Joshi在his answer中指出的那样提供向后兼容性。
错误的答案:如果确实需要,您可以破解一个脆弱的解决方案并进行反思。但是请注意,“真正的答案”将长期持续下去。您已经看到您当前选择的设计存在问题(因此,您的问题),并且基于反射的解决方案无法防止这种情况再次发生(甚至可靠)。