Есть ли конкретная причина сделать бины представления неизменяемыми? - PullRequest
0 голосов
/ 05 мая 2011

Недавно коллега предложил нам сделать объекты модели / бины, передаваемые из сервисного уровня приложения в представление неизменяемыми.

Есть ли для этого какие-либо конкретные причины, какие-либо преимущества или недостатки?Откуда взялась эта идея?

Ответы [ 3 ]

2 голосов
/ 05 мая 2011

Является ли это хорошей идеей, зависит от единственной цели. Если это чисто bean-компоненты (и, следовательно, не совсем bean-компоненты), то сделать их неизменяемыми действительно может иметь смысл. Это относительно просто: просто удалите сеттеры. Это препятствует тому, чтобы представление изменило компонент, например <c:set> и <jsp:setProperty>.

Но, в целом, я думаю, что это неоправданно преувеличено, если только вы не хотите предоставлять bean-компоненты вида в качестве стороннего API и предотвращать неправильные представления / неправильное использование таким образом. Или, если вам действительно нужны установщики, то, вероятно, их вообще нельзя делать неизменными.

2 голосов
/ 05 мая 2011

Идея могла возникнуть из концепции Объекты передачи данных (DTO) .DTO подразумевается как транспортный объект между сервером и клиентом.Идея сделать DTO неизменной состоит в том, что она предназначена только для чтения;клиент переведет атрибуты DTO в свое собственное представление и выполнит мутации на своем собственном объекте.

Затем клиент отправит DTO обратно на сервер, а сервер, в свою очередь, скопирует DTO вего собственное внутреннее представление, и выполнять мутации на этом.Это позволило бы клиенту и серверу по-прежнему связываться с контрактом сообщений, представленным DTO, но не привязываться к контракту при выполнении внутренних операций.

Например, сервер, отправляющий объект StockDTO клиенту, можетвнутренне хранить информацию о запасах в объекте Business Flow.Однако клиент может взять StockDTO и добавить его во внутренний торговый объект, рассматриваемый в таблице.

Это концепция, но, опять же, дизайн полностью зависит от вас.

1 голос
/ 05 мая 2011

Если бины доступны только для чтения внутри представления, то в этом нет ничего плохого.Это может помочь предотвратить их изменение в тех местах, где вы не хотите, чтобы они менялись.Однако вам нужно подумать о том, как вы строите эти объекты и намерены ли вы изменить их предварительный просмотр состояния.

...