Introduction
What are design patterns?
List of design patterns in Drupal 8 core
Patterns explanation in simple words
Usage examples from Drupal 8 core
https://drupalcampkyiv.org/node/59
Dnepr iOS Club #2
Speaker - Александр Колесник, middle iOS developer at WOXAPP
Тема: “MVVM vs Viper. Что и как выбирать?”
Тезисы:
- подробно разберем каждый из паттернов проектирования
- определим минусы и плюсы использования MVVM
- определим минусы и плюсы использования Viper
- проведем сравнение - определим как выбирать архитектуру для своего проекта.
Уровень: middle и выше.
Introduction
What are design patterns?
List of design patterns in Drupal 8 core
Patterns explanation in simple words
Usage examples from Drupal 8 core
https://drupalcampkyiv.org/node/59
Dnepr iOS Club #2
Speaker - Александр Колесник, middle iOS developer at WOXAPP
Тема: “MVVM vs Viper. Что и как выбирать?”
Тезисы:
- подробно разберем каждый из паттернов проектирования
- определим минусы и плюсы использования MVVM
- определим минусы и плюсы использования Viper
- проведем сравнение - определим как выбирать архитектуру для своего проекта.
Уровень: middle и выше.
SECON'2016. Сергей Аверин. Javascript-фреймворки: должен остаться только одинSECON
Рассказ от tech-менеджера о том, как мы в Acronis выбирали фреймворк в условиях, когда любое более-менее важное технологическое решение сразу затрагивает с десяток команд, несколько сотен человек и права «случайно все сломать» нет. В докладе пойдет речь о том, что хорошо работающий фронтенд — это больше про слаженную работу команды, про понятный и масштабируемый код, чем про сухие циферки. Но и циферки тоже будут.
1) Какие у нас были проблемы с текущим фреймворком — UI, архитектура, код.
2) Как измеряли, что примерно стоит брать (исследование популярности).
3) Что рассматривали.
4) На пути к демо-проекту, какие были сложности (то, что уперли идею с Typescript, собственный компилятор шаблонов, четыре Flux-фреймворка и все плохи).
5) Два пилотных демо-проекта: цифры.
6) Оценка трудоемкости перехода.
SECON'2016. Аверин Сергей, Javascript-фреймворки: должен остаться только одинSECON
Рассказ от tech-менеджера о том, как мы в Acronis выбирали фреймворк в условиях, когда любое более-менее важное технологическое решение сразу затрагивает с десяток команд, несколько сотен человек и права «случайно все сломать» нет.
Доклад Александра Макарова для Съесть собаку #10: PHP, 12/10/2017.
Тезисы:
- Что такое архитектура сайта и зачем она нужна
- Виноват ли фреймворк в плохой архитектуре
- Где выход из сложности и регрессий
- Что делать со сложным доменом
- Выводы.
Javascript-фреймворки: должен остаться только одинSergey Xek
Рассказ от tech-менеджера о том, как мы в Acronis выбирали фреймворк в условиях, когда любое более-менее важное технологическое решение сразу затрагивает с десяток команд, несколько сотен человек и права «случайно все сломать» нет.
В докладе пойдет речь о том, что производительность фронтенда — это больше про слаженную работу команды, про понятный и масштабируемый код, чем про сухие циферки. Но циферки тоже будут.
1) Какие у нас были проблемы с текущим фреймворком — UI, архитектура, код.
2) Как измеряли, что примерно стоит брать (исследование популярности).
3) Что рассматривали.
4) На пути к демо-проекту, какие были сложности (то, что уперли идею с Typescript, собственный компилятор шаблонов, четыре Flux-фреймворка и все плохи).
5) Два пилотных демо-проекта: цифры.
6) Оценка трудоемкости перехода.
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Ontico
Рассказ от tech-менеджера о том, как мы в Acronis выбирали фреймворк в условиях, когда любое более-менее важное технологическое решение сразу затрагивает с десяток команд, несколько сотен человек и права «случайно все сломать» нет.
В докладе пойдет речь о том, что производительность фронтенда — это больше про слаженную работу команды, про понятный и масштабируемый код, чем про сухие циферки. Но циферки тоже будут.
1) Какие у нас были проблемы с текущим фреймворком — UI, архитектура, код.
2) Как измеряли, что примерно стоит брать (исследование популярности).
3) Что рассматривали.
4) На пути к демо-проекту, какие были сложности (то, что уперли идею с Typescript, собственный компилятор шаблонов, четыре Flux-фреймворка и все плохи).
5) Два пилотных демо-проекта: цифры.
6) Оценка трудоемкости перехода.
Choose method for requirements Tsepkov Analyst Days-2017Maxim Tsepkov
Как выбрать для проекта практики проектирования и работы с требованиями (Максим Цепков на AnalystDays-2017). Страница доклада http://mtsepkov.org/Methods4req
Кирилл Маурин «Проектирование и разработка модульных приложений»MskDotNet Community
Выступление с MSK .NET Meetup #7
21 февраля 2017
Во вдоль и поперек изъезженной теме разработки модульных приложений есть много нового и полезного для большей части аудитории. Много материала из личного опыта автора с иллюстрацией из собственной микробиблиотеки с отрытым исходным кодом.
Кирилл Маурин «Проектирование и разработка модульных приложений» Yulia Tsisyk
Выступление с MSK .NET Meetup #7
21 февраля 2017
Во вдоль и поперек изъезженной теме разработки модульных приложений есть много нового и полезного для большей части аудитории. Много материала из личного опыта автора с иллюстрацией из собственной микробиблиотеки с отрытым исходным кодом.
Расширяемая платформа для создания и управления автоматизированными тестами н...jazzteam
Продукт XML2Selenium - это расширяемая, плагинная платформа для создания и управления автоматизированными тестами на основе технологии Java.
XML2Selenium имеет интеграцию с JUnit, работает поверх Selenium (это изменяемо). XML2Selenim позволяет создавать автоматизированные тесты в простом и понятном обычному (без навыков программирования) QA инженеру формате. XML2Selenium позволяет также управлять всеми стадиями работы с автоматизированными тестами, начиная от стадии создания и заканчивая управлением тестами.
Главными конкурентными преимуществами являются
- низкая стоимость вхождения. Начинающие автоматизаторы, и даже QA инженеры без навыков программирования создают качественные тесты, а значит легко поддерживаемые, легко изменяемые, с использованием DDT (Data Driven Testing) подходов, что увеличивает повторно-используемость тестов
- встроенные возможности структуризации тестов по папкам и файлам, а также по тегам, что позволяет качественно отобразить документацию на тесты. Внедряя эту платформу, вы автоматически улучшаете свои процессы управления тестами
- XML2Selenium - это плагинная, расширяемая платформа, позволяющая кастомизировать процессы под ваши нужды, создать новые плагины, добавить интеграцию с нужными системами, и многое другое
- все повторно-используемые части (инклюды, плагины) могут помещаться в репозитории, откуда ими могут пользоваться QA инженеры с других проектов компании, тем самым распространяется опыт и знания в области автоматизации
- XML2Selenium имеет широкий спектр полезных свойств в области автоматизации, таких как поддержка создания видео, снепшотов и скриншотов страниц, Groovy и JS скриптинга, поддержки объектно-ориентированного программирования на XML и многих других
Традиционно многие компании не инвестируют много в QA инженеров, при этом сложность продуктов и количество Use Cases растёт, и компании утыкаются в барьер, когда архитектура тестов становится сравнительно такого же уровня, как и архитектура приложения. Это же касается и автоматизации тестирования. Ключевыми проблемами становятся:
- вопросы поддержки и тестирования многих инсталяций продукта на стороне заказчика
- вопросы тестирования нескольких версий (бренчей) одного и того же продукта
- повторн
Debugging Microservices - key challenges and techniques - Microservices Odesa...Lohika_Odessa_TechTalks
Microservice architecture is widespread our days. It comes with a lot of benefits and challenges to solve. Main goal of this talk is to go through troubleshooting and debugging in the distributed micro-service world. Topic would cover:
main aspects of the logging,
monitoring,
distributed tracing,
debugging services on the cluster.
About speaker:
Andrеy Kolodnitskiy is Staff engineer in the Lohika and his primary focus is around distributed systems, microservices and JVM based languages.
Majority of time engineers spend debugging and fixing the issues. This talk will be dedicated to best practicies and tools Andrеys team uses on its project which do help to find issues more efficiently.
More Related Content
Similar to JavaScript Design Patterns overview by Ksenia Redunova
SECON'2016. Сергей Аверин. Javascript-фреймворки: должен остаться только одинSECON
Рассказ от tech-менеджера о том, как мы в Acronis выбирали фреймворк в условиях, когда любое более-менее важное технологическое решение сразу затрагивает с десяток команд, несколько сотен человек и права «случайно все сломать» нет. В докладе пойдет речь о том, что хорошо работающий фронтенд — это больше про слаженную работу команды, про понятный и масштабируемый код, чем про сухие циферки. Но и циферки тоже будут.
1) Какие у нас были проблемы с текущим фреймворком — UI, архитектура, код.
2) Как измеряли, что примерно стоит брать (исследование популярности).
3) Что рассматривали.
4) На пути к демо-проекту, какие были сложности (то, что уперли идею с Typescript, собственный компилятор шаблонов, четыре Flux-фреймворка и все плохи).
5) Два пилотных демо-проекта: цифры.
6) Оценка трудоемкости перехода.
SECON'2016. Аверин Сергей, Javascript-фреймворки: должен остаться только одинSECON
Рассказ от tech-менеджера о том, как мы в Acronis выбирали фреймворк в условиях, когда любое более-менее важное технологическое решение сразу затрагивает с десяток команд, несколько сотен человек и права «случайно все сломать» нет.
Доклад Александра Макарова для Съесть собаку #10: PHP, 12/10/2017.
Тезисы:
- Что такое архитектура сайта и зачем она нужна
- Виноват ли фреймворк в плохой архитектуре
- Где выход из сложности и регрессий
- Что делать со сложным доменом
- Выводы.
Javascript-фреймворки: должен остаться только одинSergey Xek
Рассказ от tech-менеджера о том, как мы в Acronis выбирали фреймворк в условиях, когда любое более-менее важное технологическое решение сразу затрагивает с десяток команд, несколько сотен человек и права «случайно все сломать» нет.
В докладе пойдет речь о том, что производительность фронтенда — это больше про слаженную работу команды, про понятный и масштабируемый код, чем про сухие циферки. Но циферки тоже будут.
1) Какие у нас были проблемы с текущим фреймворком — UI, архитектура, код.
2) Как измеряли, что примерно стоит брать (исследование популярности).
3) Что рассматривали.
4) На пути к демо-проекту, какие были сложности (то, что уперли идею с Typescript, собственный компилятор шаблонов, четыре Flux-фреймворка и все плохи).
5) Два пилотных демо-проекта: цифры.
6) Оценка трудоемкости перехода.
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Ontico
Рассказ от tech-менеджера о том, как мы в Acronis выбирали фреймворк в условиях, когда любое более-менее важное технологическое решение сразу затрагивает с десяток команд, несколько сотен человек и права «случайно все сломать» нет.
В докладе пойдет речь о том, что производительность фронтенда — это больше про слаженную работу команды, про понятный и масштабируемый код, чем про сухие циферки. Но циферки тоже будут.
1) Какие у нас были проблемы с текущим фреймворком — UI, архитектура, код.
2) Как измеряли, что примерно стоит брать (исследование популярности).
3) Что рассматривали.
4) На пути к демо-проекту, какие были сложности (то, что уперли идею с Typescript, собственный компилятор шаблонов, четыре Flux-фреймворка и все плохи).
5) Два пилотных демо-проекта: цифры.
6) Оценка трудоемкости перехода.
Choose method for requirements Tsepkov Analyst Days-2017Maxim Tsepkov
Как выбрать для проекта практики проектирования и работы с требованиями (Максим Цепков на AnalystDays-2017). Страница доклада http://mtsepkov.org/Methods4req
Кирилл Маурин «Проектирование и разработка модульных приложений»MskDotNet Community
Выступление с MSK .NET Meetup #7
21 февраля 2017
Во вдоль и поперек изъезженной теме разработки модульных приложений есть много нового и полезного для большей части аудитории. Много материала из личного опыта автора с иллюстрацией из собственной микробиблиотеки с отрытым исходным кодом.
Кирилл Маурин «Проектирование и разработка модульных приложений» Yulia Tsisyk
Выступление с MSK .NET Meetup #7
21 февраля 2017
Во вдоль и поперек изъезженной теме разработки модульных приложений есть много нового и полезного для большей части аудитории. Много материала из личного опыта автора с иллюстрацией из собственной микробиблиотеки с отрытым исходным кодом.
Расширяемая платформа для создания и управления автоматизированными тестами н...jazzteam
Продукт XML2Selenium - это расширяемая, плагинная платформа для создания и управления автоматизированными тестами на основе технологии Java.
XML2Selenium имеет интеграцию с JUnit, работает поверх Selenium (это изменяемо). XML2Selenim позволяет создавать автоматизированные тесты в простом и понятном обычному (без навыков программирования) QA инженеру формате. XML2Selenium позволяет также управлять всеми стадиями работы с автоматизированными тестами, начиная от стадии создания и заканчивая управлением тестами.
Главными конкурентными преимуществами являются
- низкая стоимость вхождения. Начинающие автоматизаторы, и даже QA инженеры без навыков программирования создают качественные тесты, а значит легко поддерживаемые, легко изменяемые, с использованием DDT (Data Driven Testing) подходов, что увеличивает повторно-используемость тестов
- встроенные возможности структуризации тестов по папкам и файлам, а также по тегам, что позволяет качественно отобразить документацию на тесты. Внедряя эту платформу, вы автоматически улучшаете свои процессы управления тестами
- XML2Selenium - это плагинная, расширяемая платформа, позволяющая кастомизировать процессы под ваши нужды, создать новые плагины, добавить интеграцию с нужными системами, и многое другое
- все повторно-используемые части (инклюды, плагины) могут помещаться в репозитории, откуда ими могут пользоваться QA инженеры с других проектов компании, тем самым распространяется опыт и знания в области автоматизации
- XML2Selenium имеет широкий спектр полезных свойств в области автоматизации, таких как поддержка создания видео, снепшотов и скриншотов страниц, Groovy и JS скриптинга, поддержки объектно-ориентированного программирования на XML и многих других
Традиционно многие компании не инвестируют много в QA инженеров, при этом сложность продуктов и количество Use Cases растёт, и компании утыкаются в барьер, когда архитектура тестов становится сравнительно такого же уровня, как и архитектура приложения. Это же касается и автоматизации тестирования. Ключевыми проблемами становятся:
- вопросы поддержки и тестирования многих инсталяций продукта на стороне заказчика
- вопросы тестирования нескольких версий (бренчей) одного и того же продукта
- повторн
Debugging Microservices - key challenges and techniques - Microservices Odesa...Lohika_Odessa_TechTalks
Microservice architecture is widespread our days. It comes with a lot of benefits and challenges to solve. Main goal of this talk is to go through troubleshooting and debugging in the distributed micro-service world. Topic would cover:
main aspects of the logging,
monitoring,
distributed tracing,
debugging services on the cluster.
About speaker:
Andrеy Kolodnitskiy is Staff engineer in the Lohika and his primary focus is around distributed systems, microservices and JVM based languages.
Majority of time engineers spend debugging and fixing the issues. This talk will be dedicated to best practicies and tools Andrеys team uses on its project which do help to find issues more efficiently.
Wide adoption of Microservice Architecture presents a whole new set of challenges for us as developers. Some of them are well-known and understood. About others we do not think until they strike us out of the blue and we spend a lot of sleepless nights trying to figure them out. And communication between services in distributed system is one of the latter.
During this Microservice Architecture Odesa #TechTalk we will talk about how to prevent your microservices from becoming a modern-world Tower of Babel. We will discuss how to select appropriate communication mechanisms for most common cases in a distributed system, how should we define API contracts for each of them and what tools are available for us to keep them consistent and evolve them over time.
We will touch following topics:
REST vs RPC vs Messaging and how not to get lost with your options.
Contract First development and how it can save time in multi-team environment.
SwaggerHub as a single Point of truth for REST API
Best practices for gRPC contracts and how to deal with changes in them.
About speaker:
Andrii Barsukov is Senior .NET developer at Lohika, with 5+ years of commercial experience in development of microservice applications. Currently participating in development of microservice-based financial system, which includes 20+ microservices developed by 10 separate development teams. And some of the challenges that we faced during its development I'd like to share.
На JavaScript Odesa #TechTalks мы поговорили о микрофронтендах как о современном архитектурном стиле проектирования для фронтенд разработки, который облегчает поддержку и деплой обновлений для крупных проектов.
Также мы обсудили:
Что такое микрофронтенды?
Как использовать их с старым проектом?
Монорепа vs мультирепа и почему?
О спикере:
Максим Белкин, Senior Software Engineer с 10-летним опытом коммерческой разработки веб-приложений. У Максима большой опыт в создании одностраничных приложений с использованием современных фреймворков и инструментов, а также большой опыт в области серверной разработки и создания REST API. Он также обладает глубокими знаниями в области объектно-ориентированной разработки, алгоритмов, кодирования и шаблонов тестирования и имеет опыт в гибкой разработке программного обеспечения, включая роли SCRUM Master и Team Lead.
There are a lot of things in multi-threading world, which we, as engineers, have to consider while developing applications. During Golang Odesa #TechTalks we will talk about three main problems – data races, race conditions, and deadlocks. Also, we will discuss how to avoid fantom bugs and do not shoot yourself in the foot while developing Golang applications
About speaker:
Oleksandr Karlov is Golang Team Lead at Lohika. Currently, Oleksandr is working on SLO project, which helps engineers to control reliability of their services. Before that he worked on CDN and statistics platform.
Druid is one useful and popular tool in the Big Data world. It is this OLAP system that allows you to efficiently process, store and query data. Which confirms the demand for Druid among tools in the Big Data processing environment.
With Vladimir Iordanov we will talk about how Druid works, what it consists of and what its capabilities are. Vladimir will introduce us to the Druid components, talk about the cluster architecture, how data processing is going on.
Jenkins до сих пор один из лидеров CI/CD продуктов. Поэтому стоит понимать, что он может и как этим правильно пользоваться. К тому же, этот проект всё ещё обновляется и нам желательно следить за новыми возможностями, которые он нам даёт.
В этот раз мы поговорим:
– о Jenkins pipelines and shared libraries
– какими они бывают, как и когда их надо использовать,.
– отличиях scripted и declarative вариантов.
– когда необходимо использовать shared library
– как легко настроить и начать пользоваться Jenkins в Kubernetes с использованием Jenkins configuration as code.
Доклад будет актуален для: DevOps engineers, Configuration managers, Developers who are tired of their jobs and they decided to make some Jenkins)
О спикере: Дмитрий Кулешов – DevOps Engineer с 10-летним опытом работы в области информационных технологий.
Я поделюсь с вами опытом разработки конвейерных скриптов Jenkins для организации процессов непрерывной интеграции и развертывания микросервисов. Акцент будет сделан на применении средств Jenkins для разделяемых библиотек. Я продемонстрирую подходы к созданию модульных, тестируемых и повторно используемых компонентов для сборки и развертывания. Доклад будет полезен каждому, кто так или иначе связан с автоматизацией непрерывной интеграции и развертывания ПО, будь то разработчик или же DevOps
Prometheus: infrastructure and application monitoring in kubernetes clusterLohika_Odessa_TechTalks
Доклад будет интересен тем, кто хочет воспользоваться одним из самых популярных инструментов для мониторинга с минимальными затратами времени и усилий, и без предыдущего опыта внедрения систем мониторинга . Мы рассмотрим конкретный случай внедрения на проекте "с нуля", расширение базового функционала и обсудим возможные "подводные камни" дальнейшей поддержки
Тема доклада «React и его архитектурная периферия»
React - мощнейшая библиотека для создания технических интерфейсов, но порой одного реакта не достаточно для полноценной и гибкой разработки. Мы будем обсуждать и сравнивать разные подходы для разработки современных React приложений.
В программе: React&Redux, React&Meteor, React&Relay, React&MobX, React&PRPL
Congratulations, you have been promoted to a manager role. You`ve got new pro...Lohika_Odessa_TechTalks
“In my presentation I’ll try to list the first steps that you should make on a new project in your new role. Also we will review different types of projects and challenges that you may have. I hope that my experience and suggestions, I’m about to share, will help you dive into management role quickly and painlessly. “
This presentation will be useful for everyone who wants to be a manager, to grow in this direction and who is absolutely sure that one day he or she will be promoted. It might be useful for everyone who has been promoted recently and still feels that he/she doesn’t have enough experience with different projects.
"Don't touch me and give me my money" or how motivate people who can but don...Lohika_Odessa_TechTalks
“The core of every successful project is motivated and professional team, but what can be done when the comfort zone has been reached and nothing makes your team work with the same enthusiasm? In this session, we would like to discuss with you the cause of the syndrome "weary professional“ , why it is bad and which non-standard approaches can be used for solving this problem.
Presentation will be particularly useful for those who are somehow connected with the management staff or aspire to be Team Leaders.
2. Шаблоны проектирования
Зачем они нужны?
“In my view, large-scale JavaScript apps are nontrivial
applications requiring significant developer
effort to maintain, where most heavy lifting of data
manipulation and display falls to the browser.”
- Addy Osmani
3. Что такое паттерны?
По словам Кристофера Александра,
“любой паттерн описывает задачу, которая снова и снова
возникает в нашей работе, а также принцип ее решения,
причем таким образом, что это решение можно потом
использовать миллион раз, ничего не изобретая заново”
4. Категории паттернов
Порождающие шаблоны (Creational)
Создание объектов
Структурные шаблоны (Structural)
Изменяют интерфейс и функциональность уже
существующих объектов
Решают проблемы организации больших структур
Поведенческие шаблоны (Behavioral)
Взаимодействие объектов
7. Преимущества
Паттерны способствуют повторному использованию, решая
общие проблемы дизайна
Применение паттернов облегчает документирование кода
Если программист знаком с паттернами, то ему будет легче
поддерживать такой код
8. Антипаттерны
Andrew Koenig (1995):
Describe a bad solution to a particular problem which resulted in
a bad situation occurring
Describe how to get out of said situation and how to go from
there to a good solution
9. Антипаттерны
Глобальные переменные
Передача строк в setTimeout() или setInterval() (это вызывает
eval())
Изменение прототипа Object
Внедрение JavaScript непосредственно в html код
document.write вместо document.createElement
11. Настоящий singleton работает так:
var my1 = new Single();
var my2 = new Single();
>>> my1 === my2
true
Но в JavaScript все не так просто ☺
Singleton
13. • Внутренняя функция имеет доступ к переменным и
аргументам внешней функции
• Эти переменные существуют, пока существует ссылка на
внутреннюю функцию
Замыкание (closure)
17. Использует парадигму Singleton
Использует замыкания и самовызывающиеся функции (IIFE)
Не засоряет глобальное пространство имен
Поддерживает приватные данные
Хорошо масштабируется по мере роста приложения
“Anything can be defined as a reusable module”
- Zakas.
Module
18. (function () {
// all vars and functions are in this scope only
// and access to all globals
}());
Преимущество: ничто не глобально
Проблема: это анонимный модуль – нет доступа снаружи (callbacks,
обработчики событий)
IIFE
20. Модификация модуля, когда все методы являются
частными, а в конце определения модуля
принимается решение, каким из них следует стать
общедоступными
Revealing Module Pattern
30. MV*
MVP
Presenter извлекает данные из Модели и
форматирует их для отображения в Виде
MVVM
Модель вида (ViewModel, что означает «Model of
View»)
Команды, которыми может пользоваться Вид,
чтобы влиять на Модель
обертку данных из Модели, которые подлежат
связыванию
31. Полезные советы
“The secret to building large apps is never build large
apps. Break your applications into small pieces. Then,
assemble those testable, bite-sized pieces into your
big application” - Justin Meyer.
“The more tied components are to each other, the less reusable
they will be, and the more difficult it
becomes to make changes to one without accidentally affecting
another” - Rebecca Murphey.
32. Литература
JavaScript Patterns by Stoyan Stefanov
Writing Maintainable JavaScript by Nicholas Zakas
Learning JavaScript Design Patterns by Addy Osmani
Patterns for Large-Scale JavaScript Application Architecture by
Addy Osmani
Learning JavaScript Design Patterns by Addy Osmani
http://jsdesignpatterns.com
http://shichuan.github.io/javascript-patterns/
and many more
вы писали spa? scalable, testable, maintainable?
что такое large-scale JS apps
организация и переиспользование кода (reusability) - DRY
singletone - one instance of an object.
в отличии от других языков, нам не надо создавать класс, а потом экземпляр.
JS не имеет приватных свойств и методов, но мы можем этого добиться - замыкания. Ключ к этому - функции.
single - не функция, а результат выполнения функции
переменные, объявленные в модуле, видны только в модуле
функции ограничивают scope, поэтому
функция - контейнер модуля
динамическое обновление UI и синхронизация данных
использует канал “событий”, по которому общаются Observer & Sender
Disadvantages
• Checking the integrity of your application can become difficult
• Switching a subscriber from one publisher to another can be costly
Есть еще Медиатор (диспетчер в аэропорту)
• Reduces the communication relationship from "many-to-many" to "many-to-one"
• Loose coupling
• promotes smaller, reusable components
The mediator pattern provides a standard API for modules to use.