根据google developer's guide here,在特定位置设置摄像机动画

CameraPosition cameraPosition = new CameraPosition.Builder()
    .target(MOUNTAIN_VIEW)      // Sets the center of the map to Mountain View
    .zoom(17)                   // Sets the zoom
    .bearing(90)                // Sets the orientation of the camera to east
    .tilt(30)                   // Sets the tilt of the camera to 30 degrees
    .build();                   // Creates a CameraPosition from the builder
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

但是,在api reference中,cameraposition已经有一个构造函数定义为:
public CameraPosition (LatLng target, float zoom, float tilt, float bearing)

所以,如果我写为:
  CameraPosition cameraPosition = new CameraPosition(latLng,9,0,0);


 CameraPosition cameraPosition = new CameraPosition.Builder().target(latLng).zoom(9).build();

它们是相同的还是不同的?是否需要根据引用使用静态嵌套类CameraPosition.Builder
另外,两者的描述相同:
CameraPosition constructor
构造一个摄像位置。
public CameraPosition build()
建立摄像位置。
我怀疑单词constructsbuilds之间是否有区别。不幸的是,在整个互联网上没有任何关于他们之间差异的信息(如果存在的话)。有人能帮忙吗?
编辑:
从评论中,有人指出它使用了builder设计模式。不过,我不明白为什么这里要用它?冗余构造函数的需求是什么?有谁能帮我更好地理解吗?

最佳答案

Java中的术语ConstructorBuilder之间的差异对应于Android的相机API中的CameraPosition constructorCameraPosition build()之间的差异。以下是基本区别:
当您想要减少参数的数量时,生成器比构造函数有更好的用途。在pojo中调用对象时,构造函数往往有很多参数。
通过允许一种更简单的方法来构建传递给方法的参数对象,生成器可以间接地帮助使用非构造函数方法。
如果有太多的参数,其中有些甚至为空,并且许多参数共享相同的数据类型,则应使用生成器。
ide就像利用builder,用重构的代码创建一个自动化的新builder类。
在android中为camera api编写代码时,为了获得更好的性能和优化的性能,可以考虑所有这些点。
有关代码实现,请参阅以下link

09-28 09:12