На openSAP стал доступен курс, направленный на ABAP разработчиков, которые хотят научиться разрабатывать тестируемый код.

Основные темы затрагиваемые курсом:

  • Introduction to ABAP Unit Testing
  • Test-Driven Development
  • Pair Programming & Writing Testable Code
  • Test Isolation Theory and Practice
  • Dependency Lookup
  • Working with Legacy Code, Tools and Summary

https://open.sap.com/courses/wtc1

Метафора

 

Представьте, что Вам нужно организовать в городе телефонную связь. Можно протянуть кабеля от каждого жителя к каждому, но такое решение явно имеет недостаток при добавлении нового жителя, т.к. придётся тянуть от него кабель до всех других. Гораздо дешевле создать в городе телефонную станцию, к которой будет подсоединен каждый житель. Для того чтобы позвонить нужно будет связаться со станцией, а далее станция сделает перенаправление к любому подключенному к ней жителю. Телефонная станция в данном контексте является одиночкой, смысл в том, что когда вы говорите «Мне нужна телефонная станция», вам бы отвечали «Вот она, держи», а не «Давай создадим её заново». Одиночка всегда один.

 

Читать далее

Метафора

 

Данный паттерн чем-то напоминает «фабрику», он также служит для создания объектов, однако с немного другим подходом. Представьте, что у вас есть пустой пакет (из-под сока), а вам нужен полный с апельсиновым соком. Вы «говорите» пакету «Хочу пакет апельсинового сока», он в свою очередь создает свою копию и заполняет ее соком, который вы попросили. Немного «сказочный пример», но в программировании часто так и бывает. В данном случае пустой пакет и является «прототипом», и в зависимости от того что вам требуется, он создает на своей основе требуемые вами объекты (пакеты сока). Клонирование не обязательно должно производится на самом «пакете», это может быть и какой-то другой «объект», главное лишь что данный «прототип» позволяет получать его экземпляры.

 

Читать далее

Метафора

 

Метафора данного паттерна явно следует из его названия. Представьте ситуацию, когда на стройке работает прораб (Director) и строители (Builder’ы). Строители умеют выполнять некоторые работы, которые необходимы, например, для кладки стены: положить на фундамент гидроизоляцию, замешать раствор, выложить кладку из кирпича. Однако сам строитель не знает технологического процесса который необходимо выполнить для того чтобы успешно построить стену. Для этого существует прораб, который благодаря своим знаниям и умениям строителя сможет организовать процесс создания стены. Кроме того, в нашем примере может быть ситуация, когда один строитель может строить одну стену, но совсем не понимает, как построить другую. Для этого начальник стройки (клиент) определяет каким строителем снабдить прораба для получения необходимого типа стены. В метафоре важно понимать, что процесс постройки любой стены унифицирован и имеет четко определенные шаги, а уже конкретный строитель знает, как реализовать эти шаги для создания нужного типа стены (продукта), а прораб контролирует выполнение шагов.

 

Читать далее

Назначение

 

Паттерн решает задачу определения некоторого интерфейса по созданию класса, конкретную реализацию которого определяют дочерние классы, реализующие данный интерфейс. В отличие от абстрактной фабрики, фабричный метод оперирует созданием одного единственного объекта, а не семейства.

Данный паттерн имеет несколько версий реализации, мы рассмотрим реализацию через статический метод в базовом классе. В такой реализации в статический метод поступают некоторые аргументы, на основе которых принимается решение о создании того или иного наследника базового класса.

Читать далее

Метафора

 

Метафора паттерна описывается его названием. Когда вам необходима бутылка колы, вам не нужно при этом знать, как их производят на фабрике. Достаточно сказать «дайте мне колы», а фабрика уже возвращает вам бутылку. Каким образом создать эту бутылку остается полностью на совести фабрики. Предназначение фабрики в том, чтобы можно было бы в любой момент времени полностью изменить процесс создания продукта так, чтобы клиент ничего об этом не знал и запрашивал бы продукт, как и раньше. Пример: клиент хочет прохладительный напиток, при этом снабдив клиента одной или другой фабрикой, мы сможем переключать его потребность на бутылку колы или спрайта.

Как правило, одна фабрика занимается «производством» только одного рода «продуктов». Не рекомендуется «фабрику колы» создавать с учетом производства автомобильных покрышек. Как и в жизни, паттерн «фабрика» часто создается «одиночкой».

 

Читать далее

Метафора

 

Все помнят школьное «на первый второй рассчитайся!»? Вот именно в этот момент шеренга вашего класса и являлась реализацией паттерна «итератор», хотя в программировании это конечно более функциональное понятие, но суть примерно та же. «Итератор» предоставляет правила доступа к списку каких-либо объектов независимо от того, что это за объекты. То есть не важно, какой именно класс построен и из каких учеников, должны быть общие правила подсчета и обращения как каждому ученику по списку, вроде «13-ый, выйти из строя». Ссылки, которые вы видите на многих сайтах для переходов по страницам, вроде «следующая», «предыдущая», «в начало» и т.п. по своей сути также являются доступом «итератору» который отвечает за страницы сайта.

 

Читать далее

Метафора

 

Данный паттерн можно сравнить с прохождением обследования в больнице. Однако «посетителем» в терминах паттернов здесь будут сами врачи. Чтобы было понятнее: у нас есть больной, которого требуется обследовать и полечить, но так как за разные обследования отвечают разные врачи, то мы просто присылаем к больному врачей в качестве «посетителей». Правило взаимодействия для больного очень простое «пригласите врача (посетителя) чтобы он сделал свою работу», а врач («посетитель») приходит, обследует и делает всё необходимое. Таким образом, следуя простым правилам можно использовать врачей для разных больных по одним и тем же алгоритмам. Как уже было сказано, паттерном «посетитель» в данном случае является врач, который может одинаково обслуживать разные объекты (больных) если его позовут.

 

Читать далее