根据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()
建立摄像位置。
我怀疑单词
constructs
和builds
之间是否有区别。不幸的是,在整个互联网上没有任何关于他们之间差异的信息(如果存在的话)。有人能帮忙吗?编辑:
从评论中,有人指出它使用了builder设计模式。不过,我不明白为什么这里要用它?冗余构造函数的需求是什么?有谁能帮我更好地理解吗?
最佳答案
Java中的术语Constructor
和Builder
之间的差异对应于Android的相机API中的CameraPosition constructor
和CameraPosition build()
之间的差异。以下是基本区别:
当您想要减少参数的数量时,生成器比构造函数有更好的用途。在pojo中调用对象时,构造函数往往有很多参数。
通过允许一种更简单的方法来构建传递给方法的参数对象,生成器可以间接地帮助使用非构造函数方法。
如果有太多的参数,其中有些甚至为空,并且许多参数共享相同的数据类型,则应使用生成器。
ide就像利用builder,用重构的代码创建一个自动化的新builder类。
在android中为camera api编写代码时,为了获得更好的性能和优化的性能,可以考虑所有这些点。
有关代码实现,请参阅以下link。