powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / MVC - Constructor vs Setter?
25 сообщений из 27, страница 1 из 2
MVC - Constructor vs Setter?
    #37625352
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно интересует вопрос, что лучше использовать для передачи в Controller?
К примеру делал вот таким макаром,
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class CalcMVC {
    //... Create model, view, and controller.  They are
    //    created once here and passed to the parts that
    //    need them so there is only one copy of each.
    public static void main(String[] args) {
        
        CalcModel      model      = new CalcModel();
        CalcView       view       = new CalcView(model);
        CalcController controller = new CalcController(model, view);
        
        view.setVisible(true);
    }
}

но как-то нужно было передать 2 Вьюва в один контроллер или что-то такое, тогда вопрос постал, если вызывать еще раз к примеру другой конструктор, то соответственно создается другой объект.
Человек который подсказывал мне, даже удивился - он сказал, что предпочитает, это все дело запихивать через Setter-ы?

Так как правильнее? Какие плюсы, минусы?
Спасибо!
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37626594
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_webdev_,

вообще pojo как бе номекаит
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37626604
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, утро тяжелое.

Приоритетнее использовать setter`ы, да и правильнее. Причины 2:
-javabean - как бе суть модульности при mvc, которая требует наличие конструктора без параметров.
-в ручную вы вряд ли будете создават бины, потому будете юзать DI какие нибудь, а уж они то будут создавать испоьлзуя конструкторы по умолчанию, тогда и вовсе смысл от передачи параметров в конструктор отпадает ( не буду брать в расчет guice ..лом тоже хороший инструмент, но надо им правильно пользоваться)
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37626784
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверинконструкторы по умолчанию, тогда и вовсе смысл от передачи параметров в конструктор отпадает
сам по себе смысл передачи параметров в конструктор очень даже есть .
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37626894
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaОзверинконструкторы по умолчанию, тогда и вовсе смысл от передачи параметров в конструктор отпадает
сам по себе смысл передачи параметров в конструктор очень даже есть .

не читать , сразу отвечать: вы видимо имеете ввиду опыт Джошуа по использованию статических методов для конструирования объектов? Так он и не используется публичные конструкторы с параметрами.
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37627001
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверинвы видимо имеете ввиду
я имею в виду перечисленные пункты. в особенности it allows the object to be in intermediate states
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37627348
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,

все перечисленные пункты - это то самое лучшее, что враг хорошего.
В Immutable объекты я перестал верить как и в дед мороза.
Конструкторы мутанты, вроде
testClass(N1 n1, ..., N100 n100) - меня сильно напрягают при тестировании.

Фреймворки (вроде спринга) все еще верят в конструкторы по умолчани.
Guice - можно инджектить уже где угодно и что угодно, но % применения его поменьше.
Да и все таки смысла особого от испоьлзования конструкторов я не вижу. вот честно.
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37627397
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторДа и все таки смысла особого от испоьлзования конструкторов я не вижу. вот честно.
Вы наверное не работали плотно с многопоточным кодом, поэтому разочаровались в Immutable, я согласен что не стоит пихать это везде, но иногда это настолько полезная штука, что аж плакать от счастья хочется)
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37627406
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никавторДа и все таки смысла особого от испоьлзования конструкторов я не вижу. вот честно.
Вы наверное не работали плотно с многопоточным кодом, поэтому разочаровались в Immutable, я согласен что не стоит пихать это везде, но иногда это настолько полезная штука, что аж плакать от счастья хочется)

нет, выгоду от Immutable я понимаю.
я плотно работал с aspectj и растерял веру в ООП ;)
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37627422
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторя плотно работал с aspectj и растерял веру в ООП ;)

Ну AOP перпендикулярно ООП, и во многих случаях как раз наоборот элегантно его дополняет, у класса должна быть single responsibility, а всякие там cross-cutting concerns прекрасно ложатся в ООП.
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37627425
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тьфу, прекрасно ложатся в AOP :)
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37627444
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никавторя плотно работал с aspectj и растерял веру в ООП ;)

Ну AOP перпендикулярно ООП, и во многих случаях как раз наоборот элегантно его дополняет, у класса должна быть single responsibility, а всякие там cross-cutting concerns прекрасно ложатся в ООП.

а во многих других случае некоторые принципы, вроде инкапсуляции и неизменности посылает ко всем чертям;))
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37627450
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинФреймворки (вроде спринга) все еще верят в конструкторы по умолчани.

Вера тут не при чем. Это спецификация JavaBeans, которой все придерживаются.
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37627456
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверинзабыл никпропущено...

Вы наверное не работали плотно с многопоточным кодом, поэтому разочаровались в Immutable, я согласен что не стоит пихать это везде, но иногда это настолько полезная штука, что аж плакать от счастья хочется)

нет, выгоду от Immutable я понимаю.
я плотно работал с aspectj и растерял веру в ООП ;)

прямо-таки еретик:)

По immutale objects - вещь полезная, но жаль в java нет build-in возможности для их поддержки. Что-нибудь типа аннотации @Immutable или sort of было бы неплохо:) Руками уследить за Immutable бывает сложно. Можно накосячить.
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37627479
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczОзверинФреймворки (вроде спринга) все еще верят в конструкторы по умолчани.

Вера тут не при чем. Это спецификация JavaBeans, которой все придерживаются.

во втором посте я об этом и говорил ;)
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37627580
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинКонструкторы мутанты, вроде
testClass(N1 n1, ..., N100 n100) - меня сильно напрягают при тестировании.
есть пословица про дурака и про лоб. нужно цитировать?

ОзверинФреймворки (вроде спринга) все еще верят в конструкторы по умолчанию.
и с каких пор в spring нельзя инжектировать в конструкторе? другое дело что у spring есть другая возможность обеспечивать "полноту" инициализации объекта

ОзверинДа и все таки смысла особого от испоьлзования конструкторов я не вижу. вот честно.
если у класса до 3 обязательных зависимостей, можно использовать в полный рост. особенно если код будет юзать кто-то еще.
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37627602
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,

про лоб, не очень я понял, если честно.
если критичным плюсом конструктора является возможность точно отследить, что передали все нужные аргументы, то видимо вас со временем разочаруют конструкцией, вроде:
testClass(null);
если других разрушительно очевидных плюсов нет, что стоит ли пренебрегать возможностью использовать setter`ы?:)
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37627620
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверинchpasha,

про лоб, не очень я понял, если честно.


Можно создать Builder для конструкции такого рода объекта. Но если все входные параметры обязательные, то билдер не поможет.
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37627651
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверинchpasha,
про лоб, не очень я понял, если честно.
если у класса 100 обязательных зависимостей, то весьма вероятно не все хорошо с головой у того, кто этот класс написал.

Озверинесли критичным плюсом конструктора является возможность точно отследить, что передали все нужные аргументы, то видимо вас со временем разочаруют конструкцией, вроде:
testClass(null);
IllegalStateException? к тому же не понятно, почему у сеттеров с этим как-то иначе. только в примере выше имеет место явное "вредительство", а про сеттер можно элементарно забыть/не знать.

Озверинстоит ли пренебрегать возможностью использовать setter`ы?:)
возможность должна подкрепляться наличием осознанного выбора в каждой конкретной ситуации.
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37627716
XEugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rabiterПо immutale objects - вещь полезная, но жаль в java нет build-in возможности для их поддержки. Что-нибудь типа аннотации @Immutable или sort of было бы неплохо:) Руками уследить за Immutable бывает сложно. Можно накосячить.Если сделать такую аннотацию, то за что тогда java-программистам деньги платить будут?
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37627755
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XEugenerabiterПо immutale objects - вещь полезная, но жаль в java нет build-in возможности для их поддержки. Что-нибудь типа аннотации @Immutable или sort of было бы неплохо:) Руками уследить за Immutable бывает сложно. Можно накосячить.Если сделать такую аннотацию, то за что тогда java-программистам деньги платить будут?

immutable keyword discassion
На мой взгляд было бы не плохо:)
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37629143
XEugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rabiter immutable keyword discassion
На мой взгляд было бы не плохо:)Если с такой аннотацией(или модификатором) компилятор будет просто требовать объявления всех полей как final, это будет только в первом приближении immutable. Состояние самих полей, если там ссылки на изменяемые объекты, может меняться. Впрочем, можно ещё требовать, чтобы классы, на инстансы которых ссылаются поля, тоже имели эту аннотацию/модификатор. Ну и, само собой, сеттеры запретить.
Разработчику, в зависимости от ситуации, может требоваться разная степень неизменяемости. Аннотация, в зависимости от того как она реализована, может ввести в заблуждение относительно неизменяемости(как volatile относительно потокобезопасности) или, наоборот, потребовать лишнего.
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37629393
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XEugenerabiter immutable keyword discassion
На мой взгляд было бы не плохо:)Если с такой аннотацией(или модификатором) компилятор будет просто требовать объявления всех полей как final, это будет только в первом приближении immutable. Состояние самих полей, если там ссылки на изменяемые объекты, может меняться. Впрочем, можно ещё требовать, чтобы классы, на инстансы которых ссылаются поля, тоже имели эту аннотацию/модификатор. Ну и, само собой, сеттеры запретить.
Разработчику, в зависимости от ситуации, может требоваться разная степень неизменяемости. Аннотация, в зависимости от того как она реализована, может ввести в заблуждение относительно неизменяемости(как volatile относительно потокобезопасности) или, наоборот, потребовать лишнего.

Естественно просто требования final мало. В "Effective Java: Programming Language Guide" by Joshua Bloch подробно описывается immutability. И интересный пример: "неизменяемый" класс BigInteger не был зафинален перед публикацией API. В результате от него можно наследоваться и при желании нарушить immutability.
Так что страдающие паранойей могут делать так:
Код: java
1.
2.
3.
4.
5.
public void foo(BigInteger b) {
  if (b.getClass() != BigInteger.class)
    b = new BigInteger(b.toByteArray());
    ...
  } 


Это я к тому, что без встроенных средств языка, кустарно поддерживать immutability типов может быть накладно.
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37629435
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rabiterЕстественно просто требования final мало. В "Effective Java: Programming Language Guide" by Joshua Bloch подробно описывается immutability. И интересный пример: "неизменяемый" класс BigInteger не был зафинален перед публикацией API. В результате от него можно наследоваться и при желании нарушить immutability.

У Блоха много таких моментов. Просто непонятно, зачем кому-то ломать работу своего приложения?

Плюс, не следует забывать про рефлекcию
http://stackoverflow.com/a/3301720/224222
...
Рейтинг: 0 / 0
MVC - Constructor vs Setter?
    #37629479
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidvrabiterЕстественно просто требования final мало. В "Effective Java: Programming Language Guide" by Joshua Bloch подробно описывается immutability. И интересный пример: "неизменяемый" класс BigInteger не был зафинален перед публикацией API. В результате от него можно наследоваться и при желании нарушить immutability.

У Блоха много таких моментов. Просто непонятно, зачем кому-то ломать работу своего приложения?
Метод foo из примера может быть элементом публичного API:
BlochIf you write a class whose security depends on the immutability of a BigInteger or BigDecimal argument from an untrusted client, you must check to see that the argument is a “real” BigInteger or BigDecimal, rather than an instance of an untrusted subclass.
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / MVC - Constructor vs Setter?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]