Apex OOP Patterns (Valery Dvornichenko)

Preview:

DESCRIPTION

Presentation from Belarus Salesforce Meetup on November 14 http://www.meetup.com/Minsk-Salesforce-Developer-Group

Citation preview

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