Регистрация  |  Вход

Constructor VS Init Action VS Set/Get property VS getMethod() в контроллерах ВФ страниц

Всем привет!

Хочу обсудить еще одну тему из серии "спал и думал, и вдруг понял!"

Хочу обсудить назначение и, главное, отличия в использовании Конструктора, метода используемого как Init Action с ВФ страницы, Set/Get property имеющие логику в Set или Get секциях и простого getMетода()в контроллерах страниц.

Мое понимание такое:

(1) В контруктор ставь ту логику, которая должна отработать при инициализации контроллера при всех сценариях.

(2) В метод используемый как Init Action, ставь логику, необходимую именно для данной страницы, которая должна отработать при первом обращении (точнее при любом GET http request) к контроллеру (можно сказать это дополнение к Конструкторной логике).

(3) С Set/Get property все совсем интересно: в Set ставь логику проверяющую (к примеру) инициилизировано ли уже поле, и если нет - то здесь идет инициация (т.о. иницилация поля будет один раз за жизнь страницы). В Get можно поставить аналогичную логику, но отработает она только если к полю было обращение (например с фронта), то есть если в каком то сценари поле не используется, то оно и не инициилизируется.

(5) getMетода() возвращают какую-то локальную переменную (на фронт), у которой нет поля в контроллере. Дело в том, что все (кроме transient), свойства контроллера уйдут в СтэйтВью, а часто это вовсе не нужно.

Это мое видение.

Иногда кажется, что вещи делают фактически одно и тоже, но присмотришься: есть разница, и она важна на практике.

Пожалуйста делитесь своим опытом и понимание по данному вопросу.

Всем привет!

Хочу обсудить еще одну тему из серии "спал и думал, и вдруг понял!"

Хочу обсудить назначение и, главное, отличия в использовании  Конструктора, метода используемого как  Init Action с ВФ страницы, Set/Get property имеющие логику в Set или Get секциях и простого getMетода()в контроллерах страниц.

Мое понимание такое:

(1) В контруктор ставь ту логику, которая должна отработать при инициализации контроллера при всех сценариях.

(2) В метод используемый как  Init Action,  ставь  логику, необходимую именно для данной страницы, которая должна отработать при первом обращении (точнее при любом GET http request) к контроллеру (можно сказать это дополнение к Конструкторной логике).

(3) С Set/Get property все совсем интересно: в Set ставь логику проверяющую (к примеру) инициилизировано ли уже поле, и если нет - то здесь идет инициация (т.о. иницилация поля будет один раз за жизнь страницы). В Get можно поставить аналогичную логику, но отработает она только если к полю было обращение (например с фронта), то есть если в каком то сценари поле не используется, то оно и не инициилизируется.

(5) getMетода() возвращают какую-то локальную переменную (на фронт), у которой нет поля в контроллере. Дело в том, что все (кроме transient), свойства контроллера уйдут в СтэйтВью, а часто это вовсе не нужно.

Это мое видение.
Иногда кажется, что вещи делают фактически одно и тоже, но присмотришься: есть разница, и она важна на практике.

Пожалуйста делитесь своим опытом и понимание по данному вопросу.

1. Конструктор - это понятие для class. Не важно, page controller это или просто какой элемент ООП.
2. Init Action - это уже больше как "конструктор для страницы" запускается после конструктора контроллера и единственное его преимущество в том, что туда можно пихать DML операции в отличии от конструктора.
3,4 это одно и тоже, только записано по разному. Вообще встречал в жизни как поклонников геттеров/сеттеров, так и НЕпоклонников этого способа. Тут дело вкуса.

1. Конструктор - это понятие для class. Не важно, page controller это или просто какой элемент ООП.
2. Init Action - это уже больше как "конструктор для страницы" запускается после конструктора контроллера и единственное его преимущество в том, что туда можно пихать DML операции в отличии от конструктора.
3,4 это одно и тоже, только записано по разному. Вообще встречал в жизни как поклонников геттеров/сеттеров, так и НЕпоклонников этого способа. Тут дело вкуса.

Den Brown
Всем привет!


(3) С Set/Get property все совсем интересно: в Set ставь логику проверяющую (к примеру) инициилизировано ли уже поле, и если нет - то здесь идет инициация (т.о. иницилация поля будет один раз за жизнь страницы). В Get можно поставить аналогичную логику, но отработает она только если к полю было обращение (например с фронта), то есть если в каком то сценари поле не используется, то оно и не инициилизируется.

Обращение к getter/setter а так же к методам get.../set... недетермитировано, может быть вызвано несколько раз в разной последовательности. Подробнее тут http://www.salesforce.com/docs/developer/pages/Content/pages_controller_lifecycle.htm

[quote="Den Brown"]Всем привет!


(3) С Set/Get property все совсем интересно: в Set ставь логику проверяющую (к примеру) инициилизировано ли уже поле, и если нет - то здесь идет инициация (т.о. иницилация поля будет один раз за жизнь страницы). В Get можно поставить аналогичную логику, но отработает она только если к полю было обращение (например с фронта), то есть если в каком то сценари поле не используется, то оно и не инициилизируется.

[/quote]

Обращение к getter/setter а так же к методам get.../set... недетермитировано, может быть вызвано несколько раз в разной последовательности. Подробнее тут http://www.salesforce.com/docs/developer/pages/Content/pages_controller_lifecycle.htm

Могу тебя немного огорчить, но свойств на самом деле нет!

Могу тебя немного огорчить, но свойств на самом деле нет!