- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
任务:我正在设计一个供开发人员使用的库。
目标:我需要确保 future 版本中的更改不会影响现有开发人员。
示例:
首次发布期间的情况:
只有一个类
public class ClassSample
{
String methodSample(String para1,String Para2, int Para3, String Para4);
}
第二次发布期间的情况:
要求:
methodSample 的响应可以返回多个值。
methodSample 方法中需要更多参数。
解决方案:一种方法是添加另一个重载方法,该方法将具有新参数并返回对象而不是内置数据类型。
但是上述解决方案的问题是,将来会有太多的重载方法,太多的参数会显得大材小用。
修改后的解决方案1:
void methodSample(Request request, Response response)
在每个版本中(显然如果需要的话),我将修改请求和响应类以具有新的附加方法来获取/设置值。在这种情况下会有一个问题,因为在方法内部,我将无法区分调用者是 Version10 还是 Version20。
修改后的解决方案2:
void methodSample(AbsractRequest request, AbstractResponse response)
在每个版本中,我们都可以扩展派生类,例如 Request200 扩展 Request100 扩展 AbstractRequest,响应类也类似。在这种情况下,我可以通过检查实例类型来检查内部方法调用者是 Version10 还是 Version20。
总而言之,修改后的解决方案 2 对我来说看起来不错,您的想法如何?
最佳答案
我会选择修改后的解决方案 1,但在类中添加了 get/set Version 方法。
您的库可以使用 getVersion 找出用户程序期望的行为
关于java - 如何设计我的 Java/C# 库,使其在未来发生变化时保持二进制兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5700483/
大家好啊,我是summo,2024也接近尾声了,是时候需要总结和反思一下了。 今年发生了太多的事情,而且每一件都是人生大事,比如领证、买房、裁员、面试找工作等等,有些事情思考了很久才做如领证、买房,有
我是一名优秀的程序员,十分优秀!