Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java API设计-使用对象或集合作为参数?_Java_Oop_Api Design - Fatal编程技术网

Java 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”,

以下哪种设计被认为更适合API?为什么

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
也没有意义-它还会有哪些附加值呢。也许一个比使用地图更好的设计是可能的。那张地图负责什么?