2016-08-27 7 views
-3

Зачем нужен метод setter, когда constructor обрабатывает значение моей личной переменной.Конструктор В.С. setter Methods

В чем разница?

public class Account { 


private String name; 


public Account(String name) 
{ 
    this.name = name; 
} 

public void setName(String Name) 
{ 
    this.name = name; 
} 

public String getName() 
{ 
    return name + " is the best"; 
} 
+0

Так что в будущем вы можете снова установить имя. Конструкторы устанавливают значения по умолчанию для нового объекта – Li357

+5

Почему бы вам не проверить, есть ли подобные вопросы здесь? Я нашел его здесь http://stackoverflow.com/questions/19359548/setter-methods-or-constructors – djames

+0

Вы имеете в виду вернуться к null. Значит, это может быть другое имя? –

ответ

0

В то время как конструктор может справиться с этой задачей, функцией сеттер является сделать соответствующее значение изменяемым (внешне), а с помощью конструктора только будет неизмененно, если это не публичное или изменить внутренне.

Обычно значение, которое не должно изменяться (например, идентификаторы и т. Д.), Устанавливается конструктором и помечено как окончательное, а значение, которое должно быть изменено извне, имеет метод setter, чтобы изменить значение по мере необходимости.

1

Для стартера вы можете использовать constructor, чтобы установить значение вашего атрибута в момент создания объекта, но много случаев. Это будет проблемой для вас, потому что Object может иметь различное значение в соответствии с контекстом, в который они помещаются.

После использования Constructor и создан ваш Object (конструктор только один раз для объекта), что, если вам нужно изменить значение атрибута. Вы можете создать новый Object, но это пустая трата ресурсов. Если Dependency не является вариантом в вашем коде, тогда переходите только к конструктору.

Для выполнения требования 4 принципа OOP, Getter и Setter метод является ключом для его достижения.

Это также зависит от шаблона дизайна, для Immutable Object Creation, вы должны использовать конструктор, потому что вы не можете изменить состояние объекта после его создания.

Getter и Setter является причиной того, что объект Pojo считается более мощным, когда вам нужно кодировать 100 LOC, которые содержат в себе множество логических элементов. Но с конструктором вы должны создать конструктор разных параметров по требованию, который выполнит вашу логику, которая приведет к количеству зависимостей от класса.

В целях дальнейшего использования Constructor должен использоваться только для экземпляров объекта. Например: Single responsibility principle в SOLID.

4

Параметры конструктора лучше всего подходят для обязательных полей. Вы не можете создать объект без предоставления всех необходимых значений.

Именованные поля лучше, если они являются необязательными, могут быть установлены в любом порядке, вы хотите четко указать, какое поле является чем. Названные поля также помогают избежать путаницы, когда типы являются одинаковыми и могут быть легко запутаны.

Примечания:

  • они могут быть использованы в комбинации.
  • вы можете использовать фабричный метод или построитель вместо прямого вызова конструктора.
Смежные вопросы