SlideShare a Scribd company logo
www.vrpinc.com 
SFDC Apex 
Patterns 
Valery Dvornichenko, 
Certified SFDC Developer
Introduction 
Singleton 
Strategy 
Decorator 
Facade 
Composite 
Bulk State Transition 
www.vrpinc.com
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
The Decorator 
Расширяем 
существующий объект 
путем добавления к нему 
дополнительного слоя, 
обертки 
www.vrpinc.com
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
Composite 
Используется для 
представления 
выражений в Apex 
независимо от его 
сложности, не натыкаясь 
на Salesforce Goveror 
limits, которые может 
вызывать рекурсия. 
www.vrpinc.com
www.vrpinc.com 
Intent 
• Создание структуры объектов, которая может содержать в себе как 
объекты так и структуры этих же объектов
www.vrpinc.com 
Intent
www.vrpinc.com 
Intent 
• Работа с объектом и структурой единообразна и унифицирована. 
• Т.е. нет разницы, «отдаем команду» мы одному объекту или целой 
структуре
www.vrpinc.com 
Implementation
Bulk State 
Transition 
Использование “Bulk” 
подхода для обработки 
данных 
www.vrpinc.com
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

More Related Content

PDF
Применение статистических методов и инструментов для анализа производительнос...
PPT
Нагрузочное тестирование web-приложений с помощью Load Runner
PPTX
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
PDF
Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса
PPTX
Использование Mock-объектов в TDD на платформе .NET
PDF
TMPA-2015: Multi-Module Application Tracing in z/OS Environment
PPTX
TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...
PPT
6 лекция. тестирование производительности
Применение статистических методов и инструментов для анализа производительнос...
Нагрузочное тестирование web-приложений с помощью Load Runner
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса
Использование Mock-объектов в TDD на платформе .NET
TMPA-2015: Multi-Module Application Tracing in z/OS Environment
TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...
6 лекция. тестирование производительности

Similar to Apex OOP Patterns (Valery Dvornichenko) (20)

PDF
20111002 information retrieval raskovalov_lecture3
PDF
Этюды о буферизации: асинхронные оповещения, репликация обновлений, объединен...
PDF
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
ODP
Refactoring
PDF
Разговор про Java 9. Extended version
PPT
PureMVC в картинках - часть 1
PDF
C# Web. Занятие 02.
PDF
Глава 2: Среда разработки NetBeans
PPTX
Классы и объекты в Java
PPTX
Java Core. Lecture# 2. Classes & objects.
PDF
Масштабируемая архитектура фронтенда
PDF
ук 03.003.01 2011
PDF
C# Desktop. Занятие 16.
PDF
Drupal code sprint для новичков
PPTX
Roslyn API : SyntaxTree vs CodeDom, SemanticModel vs Reflection
PDF
Дизайн больших приложений в ФП
PPTX
Luxoft async.net
PPTX
PDF
D2D Pizza JS Илья Беда "Куда мы все катимся?"
PDF
Перевод новостного приложения на БД PostgreSQL
20111002 information retrieval raskovalov_lecture3
Этюды о буферизации: асинхронные оповещения, репликация обновлений, объединен...
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
Refactoring
Разговор про Java 9. Extended version
PureMVC в картинках - часть 1
C# Web. Занятие 02.
Глава 2: Среда разработки NetBeans
Классы и объекты в Java
Java Core. Lecture# 2. Classes & objects.
Масштабируемая архитектура фронтенда
ук 03.003.01 2011
C# Desktop. Занятие 16.
Drupal code sprint для новичков
Roslyn API : SyntaxTree vs CodeDom, SemanticModel vs Reflection
Дизайн больших приложений в ФП
Luxoft async.net
D2D Pizza JS Илья Беда "Куда мы все катимся?"
Перевод новостного приложения на БД PostgreSQL
Ad

More from Yury Bondarau (9)

PPTX
Minsk lightnng week v2
PPTX
Aura Framework and Lightning (Nikolay Zenko and Alexey Filippov)
PPTX
Under the Covers of Salesforce (Eugene Rusalev)
PPTX
ExactTarget (Dmitry Yasko)
PPTX
Heroku1 (Alexey Filippov)
PPTX
Salesforce Summer 14 Release Notes (Alexandra Vilks)
PPTX
Work.com (Valery Dvornichenko)
PPT
Salesforce Security Model (Dmitry Goshko, Igor Haritonovich)
PPTX
IT Kitchen (Artem Levchenko)
Minsk lightnng week v2
Aura Framework and Lightning (Nikolay Zenko and Alexey Filippov)
Under the Covers of Salesforce (Eugene Rusalev)
ExactTarget (Dmitry Yasko)
Heroku1 (Alexey Filippov)
Salesforce Summer 14 Release Notes (Alexandra Vilks)
Work.com (Valery Dvornichenko)
Salesforce Security Model (Dmitry Goshko, Igor Haritonovich)
IT Kitchen (Artem Levchenko)
Ad

Apex OOP Patterns (Valery Dvornichenko)

  • 1. www.vrpinc.com SFDC Apex Patterns Valery Dvornichenko, Certified SFDC Developer
  • 2. Introduction Singleton Strategy Decorator Facade Composite Bulk State Transition www.vrpinc.com
  • 3. www.vrpinc.com Singleton Решение задач с использованием одного экземпляра объекта и сохранением состояния
  • 4. www.vrpinc.com Common Uses For This Pattern Глобальный контекст переменной в рамках одной Entry Point. Apex RL Example: • Schema.Describe результат по известному объекту Java IR Example: • Логирующий Singleton (FileLogger) • Объект Mouse RL Example: • Я
  • 7. www.vrpinc.com Real Life Implementation
  • 8. www.vrpinc.com Strategy Решение задач различными методами, которые могут быть выбраны в процессе выполнения программы, не вникая в суть решения
  • 9. www.vrpinc.com Common Uses For This Pattern Предназначается для выполнения задач, которые могут быть выполнены различными способами с возможностью выбора этого способа во время выполнения задачи.
  • 12. The Decorator Расширяем существующий объект путем добавления к нему дополнительного слоя, обертки www.vrpinc.com
  • 15. www.vrpinc.com Facade Упрощение интерфейса для работы со комплексной логикой
  • 21. Composite Используется для представления выражений в Apex независимо от его сложности, не натыкаясь на Salesforce Goveror limits, которые может вызывать рекурсия. www.vrpinc.com
  • 22. www.vrpinc.com Intent • Создание структуры объектов, которая может содержать в себе как объекты так и структуры этих же объектов
  • 24. www.vrpinc.com Intent • Работа с объектом и структурой единообразна и унифицирована. • Т.е. нет разницы, «отдаем команду» мы одному объекту или целой структуре
  • 26. Bulk State Transition Использование “Bulk” подхода для обработки данных www.vrpinc.com
  • 27. www.vrpinc.com Main Idea  Работа с данными в триггере должна вестись в bulk –режиме, т.е. не работать с данными поодиночке.  Идеальное решение – использование методов, которые обрабатывают list данных за один заход, а не вызывать метод, который работает с одной записью, в цикле
  • 29. www.vrpinc.com Implementation - Реализовать внешний метод, принимающий List данных, который и будет содержать в себе логику обработки - В триггере только формируем выборку данных и отправляем в метод. - Задача триггера состоит лишь в укомплектовании выборки, логика вся вынесена во внешний метод - ….
  • 30. www.vrpinc.com Implementation - Реализовать внешний метод, принимающий List данных, который и будет содержать в себе логику обработки - В триггере только формируем выборку данных и отправляем в метод. - Задача триггера состоит лишь в укомплектовании выборки, логика вся вынесена во внешний метод - Внешний метод выполнит всю работу 
  • 31. www.vrpinc.com Thank you for your attention