apex oop patterns (valery dvornichenko)
DESCRIPTION
Presentation from Belarus Salesforce Meetup on November 14 http://www.meetup.com/Minsk-Salesforce-Developer-GroupTRANSCRIPT
www.vrpinc.com
SFDC Apex
PatternsValery Dvornichenko,
Certified SFDC Developer
www.vrpinc.com
Introduction
Singleton
Strategy
Decorator
Facade
Composite
Bulk State Transition
www.vrpinc.com
Singleton
Решение задач с использованием одного экземпляра объекта и сохранением состояния
www.vrpinc.com
Common Uses For This Pattern
Глобальный контекст переменной в рамках одной Entry Point.
Apex RL Example:
• Schema.Describe результат по известному объекту
Java IR Example:
• Логирующий Singleton (FileLogger)
• Объект Mouse
RL Example:
• Я
www.vrpinc.com
Apex Implementation
www.vrpinc.com
Java Implementation
www.vrpinc.com
Real Life Implementation
www.vrpinc.com
Strategy
Решение задач различными методами, которые могут быть выбраны в процессе выполнения программы, не вникая в суть решения
www.vrpinc.com
Common Uses For This Pattern
Предназначается для выполнения задач, которые могут быть
выполнены различными способами с возможностью выбора этого
способа во время выполнения задачи.
www.vrpinc.com
Apex Example
www.vrpinc.com
Apex Example
www.vrpinc.com
The Decorator
Расширяем существующий объект путем добавления к нему дополнительного слоя, обертки
www.vrpinc.com
Apex Implementation
www.vrpinc.com
Apex Implementation
www.vrpinc.com
Facade
Упрощение интерфейса для работы со комплексной логикой
www.vrpinc.com
Java Example
www.vrpinc.com
Java Example
www.vrpinc.com
Java Example
www.vrpinc.com
Apex Example
www.vrpinc.com
Apex Example
www.vrpinc.com
Composite
Используется для представления выражений в Apexнезависимо от его сложности, не натыкаясь на Salesforce Goverorlimits, которые может вызывать рекурсия.
www.vrpinc.com
Intent
• Создание структуры объектов, которая может содержать в себе как
объекты так и структуры этих же объектов
www.vrpinc.com
Intent
www.vrpinc.com
Intent
• Работа с объектом и структурой единообразна и унифицирована.
• Т.е. нет разницы, «отдаем команду» мы одному объекту или целой
структуре
www.vrpinc.com
Implementation
www.vrpinc.com
Bulk State Transition
Использование “Bulk” подхода для обработки данных
www.vrpinc.com
Main Idea
Работа с данными в триггере должна вестись в bulk –режиме, т.е. не
работать с данными поодиночке.
Идеальное решение – использование методов, которые
обрабатывают list данных за один заход, а не вызывать метод,
который работает с одной записью, в цикле
www.vrpinc.com
Main Idea
VS
www.vrpinc.com
Implementation
- Реализовать внешний метод, принимающий List данных, который и
будет содержать в себе логику обработки
- В триггере только формируем выборку данных и отправляем в метод.
- Задача триггера состоит лишь в укомплектовании выборки, логика
вся вынесена во внешний метод
- ….
www.vrpinc.com
Implementation
- Реализовать внешний метод, принимающий List данных, который и
будет содержать в себе логику обработки
- В триггере только формируем выборку данных и отправляем в метод.
- Задача триггера состоит лишь в укомплектовании выборки, логика
вся вынесена во внешний метод
- Внешний метод выполнит всю работу
www.vrpinc.com
Thank you for your attention