Java API设计-使用对象或集合作为参数?
以下哪种设计被认为更适合API?为什么Java API设计-使用对象或集合作为参数?,java,oop,api-design,Java,Oop,Api Design,以下哪种设计被认为更适合API?为什么 apiMethod(Map-aToB) 或 apiMethod(MapWrapper-MapWrapper) 其中MapWrapper只是一个包含对映射的引用的类 这两种方法的优点和缺点是什么?您总是追求“简约”的API 在这种情况下:当您的API在传递映射时起作用时,您当然会选择该路径。为什么要让你的客户先把地图包起来 选项1的优点是——这是一条直截了当的道路 而选项2的缺点是使用API更加困难 换句话说:如果该参数的中心“属性”是“to a map”,
apiMethod(Map-aToB)
或
apiMethod(MapWrapper-MapWrapper)
其中MapWrapper
只是一个包含对映射的引用的类
这两种方法的优点和缺点是什么?您总是追求“简约”的API
在这种情况下:当您的API在传递映射时起作用时,您当然会选择该路径。为什么要让你的客户先把地图包起来
选项1的优点是——这是一条直截了当的道路
而选项2的缺点是使用API更加困难
换句话说:如果该参数的中心“属性”是“to a map”,那么它应该作为map传递。但是,当“中心主题”是不同的东西时,你传递的是与另一个主题相关的东西 我认为使用
Map
作为API的参数是不好的做法,因为很难理解API真正需要什么。在一些古老的代码中,我发现了如下方法:
doSomeStuff(Session session){
String aa = session.get("aa");
String bb = session.get("bb");
return aa + bb;
}
此代码的重构将是:
doSomeStuff(String aa, String bb){
return aa + bb;
}
您知道需要
aa
和bb
来调用API。我更喜欢使用模型类作为参数,而不是通用的Map
MapWrapper
也没有意义-它还会有哪些附加值呢。也许一个比使用地图更好的设计是可能的。那张地图负责什么?