Всем привет!
Хочу обсудить еще одну тему из серии "спал и думал, и вдруг понял!"
Хочу обсудить назначение и, главное, отличия в использовании Конструктора, метода используемого как 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 это одно и тоже, только записано по разному. Вообще встречал в жизни как поклонников геттеров/сеттеров, так и НЕпоклонников этого способа. Тут дело вкуса.
Обращение к 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
Могу тебя немного огорчить, но свойств на самом деле нет!
Могу тебя немного огорчить, но свойств на самом деле нет!