2015-02-25 4 views
0

Согласно 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:

конструирует CameraPosition.

public CameraPosition build():

Строит CameraPosition.

Я сомневаюсь, что если есть какая-то разница между словами constructs и builds. К сожалению, нет никакой информации по всему интернету об их различии (если существует). Может ли кто-нибудь помочь?

EDIT: Из комментариев кто-то отметил, что он использует шаблон проектирования Builder. Хотя, я не могу понять, почему он используется здесь? В чем необходимость избыточного конструктора? Может ли кто-нибудь помочь мне лучше понять?

+0

http://en.wikipedia.org/wiki/Builder_pattern – Andy

+0

@ Andy Hi..thanks для справки ... можете ли вы объяснить, в чем разница между их использованием? я буду признателен. –

ответ

1

Разница между терминами Constructor и Builder в Java соответствует такой же, как разница между CameraPosition constructor и CameraPosition build() в API камеры Android. Вот основные отличия:

  • Если вы хотите уменьшить количество параметров, то строители служат лучшей цели, чем конструкторы. Конструкторы, как правило, имеют множество параметров, когда речь идет о вызове объекта в POJO.
  • Строитель может косвенно помочь с неконструкторскими методами, позволяя более простой способ создания объектов параметров, передаваемых методам.
  • Если имеется слишком много параметров, из которых некоторые из них равны нулю, и многие из них используют одни и те же типы данных, которые должны использоваться строителями.
  • IDE, как воспользоваться создателем, создавая автоматизированный новый класс Builder с реорганизованным кодом.

Все эти моменты могут быть приняты во внимание при написании кода для API-интерфейса Camera в android для лучшей и оптимизированной производительности.

Для реализации кода см. Следующие link.

+0

так, ради использования, оба они одинаковые, но вторая удобна. правильно? –

1

Я полагаю, причина, по которой ребята в Google это сделали, - это ясность и удобство.

Какое из следующего более читаемо?

CameraPosition cameraPosition = new CameraPosition(latLng, 11.0f, 0, 0); 

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

Вам не нужно искать подпись метода, чтобы узнать, какие аргументы нужно ввести. Кроме того, вам не нужно знать значения наклона и значения по умолчанию.

+0

так, оба одинаковые, но второй удобный. правильно? –

+0

@Krupal правильный. Второй делает ваш код более удобочитаемым. – Simas

Смежные вопросы