任务:我正在设计一个供开发人员使用的库。
目标:我需要确保未来版本中的更改不会影响现有开发人员。
例子:
第一次发布时的情况:
有一类
public class ClassSample
{
String methodSample(String para1,String Para2, int Para3, String Para4);
}
第二次发布时的情况:
要求:
methodSample 的响应可以返回多个值。
methodSample 方法中需要更多参数。
解决方案:一种方法是添加另一个重载方法,该方法将具有新参数并返回对象而不是内置数据类型。
但是上述方案的问题是,以后重载的方法太多,参数太多会矫枉过正。
修改方案一:
void methodSample(Request request, Response response)
在每个版本中(显然,如果需要),我将修改请求和响应类以具有新的附加方法来获取/设置值。在这种情况下会出现问题,因为在方法内部,我将无法区分调用者是 Version10 还是 Version20。
修改后的解决方案 2:
void methodSample(AbsractRequest request, AbstractResponse response)
在每个版本中,我们都可以扩展派生类,例如 Request200 extends Request100 extends AbstractRequest,响应类类似。在这种情况下,我可以通过检查实例类型来检查方法内部调用者是 Version10 还是 Version20。
总而言之,修改后的解决方案 2 对我来说看起来不错,您的想法呢?