我想为一些标准创建一个类库。这些标准每年更新一次(不一定每年更新,也可能需要3-4年)。我也想维护较旧的版本。做这件事最好的方法是什么?
目前,我正在考虑以下结构:
StandardName (namespace) --> Year(namespace) --> actual implementation of particular standards Class这里的问题是,从一年到另一年标准的改变也需要将所有类复制到新的命名空间,尽管其中一些可能根本不会改变。有什么有效的方法吗?还是我错过了什么?
发布于 2009-12-21 21:57:54
我认为这里有一个合适的封装是关键。
标准的某些部分在不同版本之间必须保持不变,因此实现的某些部分应该或多或少是稳定的。
如果你知道哪些部分最有可能保持不变,那么你可以特别注意这些部分的封装,这样你就可以最大限度地提高可重用性。另一方面,对于更有可能被提炼的部分,你应该尽可能地抽象…特别是如果规范一定要扩展的话(增加一些功能,但保持旧的不变)。
不要害怕在不同版本之间进行重构...你可能在第一次就会弄错。重构你的设计,改进它,改变它,而不是从头开始或者复制粘贴到新的实现中。随着版本的发展,您将能够更好地了解您的规范是如何演变的。
发布于 2009-12-21 21:55:40
根据你的标准,OO能不能很好地处理这个问题。最基本的支持是您的类需要实现的接口。这意味着除非你开始在你的实现中使用委托,否则不能重用。
或者,如果标准只会增长(即旧功能永远不会改变),那么您可以通过继承来完美地支持这一点。
在现实世界中,您将混合使用这三种方法。通用代码将放入基类和委托中,因此您只需复制几行代码即可获得大部分功能。然后从头开始或通过覆盖现有实现来实现其余部分。
发布于 2009-12-21 22:27:13
需求问题:
如果您的标准是向后兼容的,则可以在实现新标准时继承旧版本的类。
如果不是,但版本不一定要共存,只需按您认为合适的方式更改旧的源代码,并每年发布一个新版本。
如果它不是向后兼容的,并且几个版本必须共存,那么可能需要名称空间分离。当然,如果您的标准使用单例,这可能会带来问题,每个版本都会有自己的版本,这可能会超出预期。
底线:如果可能的话,我会避免名称空间分离,但您可能需要它。
https://stackoverflow.com/questions/1940171
复制相似问题