apex oop patterns (valery dvornichenko)

31
www.vrpinc.com SFDC Apex Patterns Valery Dvornichenko, Certified SFDC Developer

Upload: yury-bondarau

Post on 03-Jul-2015

127 views

Category:

Software


3 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

SFDC Apex

PatternsValery Dvornichenko,

Certified SFDC Developer

Page 2: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Introduction

Singleton

Strategy

Decorator

Facade

Composite

Bulk State Transition

Page 3: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Singleton

Решение задач с использованием одного экземпляра объекта и сохранением состояния

Page 4: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Common Uses For This Pattern

Глобальный контекст переменной в рамках одной Entry Point.

Apex RL Example:

• Schema.Describe результат по известному объекту

Java IR Example:

• Логирующий Singleton (FileLogger)

• Объект Mouse

RL Example:

• Я

Page 5: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Apex Implementation

Page 6: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Java Implementation

Page 7: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Real Life Implementation

Page 8: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Strategy

Решение задач различными методами, которые могут быть выбраны в процессе выполнения программы, не вникая в суть решения

Page 9: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Common Uses For This Pattern

Предназначается для выполнения задач, которые могут быть

выполнены различными способами с возможностью выбора этого

способа во время выполнения задачи.

Page 10: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Apex Example

Page 11: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Apex Example

Page 12: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

The Decorator

Расширяем существующий объект путем добавления к нему дополнительного слоя, обертки

Page 13: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Apex Implementation

Page 14: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Apex Implementation

Page 15: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Facade

Упрощение интерфейса для работы со комплексной логикой

Page 16: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Java Example

Page 17: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Java Example

Page 18: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Java Example

Page 19: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Apex Example

Page 20: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Apex Example

Page 21: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Composite

Используется для представления выражений в Apexнезависимо от его сложности, не натыкаясь на Salesforce Goverorlimits, которые может вызывать рекурсия.

Page 22: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Intent

• Создание структуры объектов, которая может содержать в себе как

объекты так и структуры этих же объектов

Page 23: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Intent

Page 24: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Intent

• Работа с объектом и структурой единообразна и унифицирована.

• Т.е. нет разницы, «отдаем команду» мы одному объекту или целой

структуре

Page 25: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Implementation

Page 26: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Bulk State Transition

Использование “Bulk” подхода для обработки данных

Page 27: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Main Idea

Работа с данными в триггере должна вестись в bulk –режиме, т.е. не

работать с данными поодиночке.

Идеальное решение – использование методов, которые

обрабатывают list данных за один заход, а не вызывать метод,

который работает с одной записью, в цикле

Page 28: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Main Idea

VS

Page 29: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Implementation

- Реализовать внешний метод, принимающий List данных, который и

будет содержать в себе логику обработки

- В триггере только формируем выборку данных и отправляем в метод.

- Задача триггера состоит лишь в укомплектовании выборки, логика

вся вынесена во внешний метод

- ….

Page 30: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Implementation

- Реализовать внешний метод, принимающий List данных, который и

будет содержать в себе логику обработки

- В триггере только формируем выборку данных и отправляем в метод.

- Задача триггера состоит лишь в укомплектовании выборки, логика

вся вынесена во внешний метод

- Внешний метод выполнит всю работу

Page 31: Apex OOP Patterns (Valery Dvornichenko)

www.vrpinc.com

Thank you for your attention