Если у кого-то есть идеи для улучшения контента и можетt помочь в ведении канала, добавления, оформления постов за оплату - напишите @aldrson.
👍8
Шаблон проектирования Abstract Factory
Шаблон Абстрактная фабрика относится к классу порождающих паттернов. Его основное назначение - предоставить интерфейс для создания семейства взаимосвязанных объектов, не указывая конкретные классы этих объектов.
Этот шаблон стоит использовать, если:
- ваша система должна быть независимой от способа создания новых объектов
- создаваемые объекты должны использоваться вместе и быть взаимосвязанными.
Классы абстрактной фабрики часто реализуются фабричными методами,
но могут быть реализованы и с помощью паттерна Prototype.
Смотреть реализацию
Шаблон Абстрактная фабрика относится к классу порождающих паттернов. Его основное назначение - предоставить интерфейс для создания семейства взаимосвязанных объектов, не указывая конкретные классы этих объектов.
Этот шаблон стоит использовать, если:
- ваша система должна быть независимой от способа создания новых объектов
- создаваемые объекты должны использоваться вместе и быть взаимосвязанными.
Классы абстрактной фабрики часто реализуются фабричными методами,
но могут быть реализованы и с помощью паттерна Prototype.
Смотреть реализацию
👍15🔥2
Паттерн Фасад похож на паттерн ... тем, что замещает сложную подсистему и может сам её инициализировать. Но в отличие от паттерна Фасад, паттерн ... имеет тот же интерфейс, что его служебный объект, благодаря чему их можно взаимозаменять.
Anonymous Quiz
32%
адаптер
37%
декоратор
31%
заместитель
👍3
Личный опыт: два кейса миграции
Senior Software Engineer PHP рассказал, как им в компании удалось сделать реиндекс в приложении для знакомств на 25 млн. пользователей.
Статья будет интересна тем, кто работает с ElasticSearch и базами пользователей под большой нагрузкой, где очень важна актуальность информации и ее постоянное обновление.
Читать статью
Senior Software Engineer PHP рассказал, как им в компании удалось сделать реиндекс в приложении для знакомств на 25 млн. пользователей.
Статья будет интересна тем, кто работает с ElasticSearch и базами пользователей под большой нагрузкой, где очень важна актуальность информации и ее постоянное обновление.
Читать статью
Highload.tech - медіа для розробників
Как обновить данные в базе, чтобы 25 млн пользователей ничего не заметили: наш опыт
Привет! Меня зовут Андрей Годяцкий и я Senior Software Engineer PHP в украинской продуктовой IT-компании Appflame. В этой статье я хочу рассказать о двух кейсах реиндекса/ремапинга или, как принято в SQL, миграции: первый — с 20% просадкой по продуктовым…
👍5
Шаблон проектирования Mediator
Посредник относится к поведенческим паттернам. Он позволяет уменьшить связанность множества классов между собой, перемещая эти связи в один класс-посредник.
Представьте себе контроль трафика в аэропорту: все решения о том, какие самолеты могут взлетать или садиться, принимает диспетчер. Для этого все сообщения не пересылаются между самолетами напрямую, а поступают в башню управления. Такой централизованный контроллер и есть «медиатор».
Медиатор выступает в качестве посредника в общении между различными модулями, инкапсулируя их взаимодействие.
Смотреть реализацию
Посредник относится к поведенческим паттернам. Он позволяет уменьшить связанность множества классов между собой, перемещая эти связи в один класс-посредник.
Представьте себе контроль трафика в аэропорту: все решения о том, какие самолеты могут взлетать или садиться, принимает диспетчер. Для этого все сообщения не пересылаются между самолетами напрямую, а поступают в башню управления. Такой централизованный контроллер и есть «медиатор».
Медиатор выступает в качестве посредника в общении между различными модулями, инкапсулируя их взаимодействие.
Смотреть реализацию
👍18
Шаблон проектирования Flyweigth
Приспособленец (также - Легковес) - структурный паттерн проктирования. Он позволяет вместить большее количество объектов в отведенную оперативную память.
Основная идея паттерна — различие между внутренним и внешним состоянием объекта. Внешнее состояние передается клиентом, использующим приспособленца, в некотором контексте. Внутреннее состояние хранится непосредственно в приспособленце и позволяет разделять их. Под разделением понимается возможность одновременной работы нескольких клиентов с одним и тем же приспособленцем.
Смотреть реализацию
Приспособленец (также - Легковес) - структурный паттерн проктирования. Он позволяет вместить большее количество объектов в отведенную оперативную память.
Основная идея паттерна — различие между внутренним и внешним состоянием объекта. Внешнее состояние передается клиентом, использующим приспособленца, в некотором контексте. Внутреннее состояние хранится непосредственно в приспособленце и позволяет разделять их. Под разделением понимается возможность одновременной работы нескольких клиентов с одним и тем же приспособленцем.
Смотреть реализацию
👍10🔥2
Шаблон проектирования Command
Команда - один из поведенческих шаблонов, добавляющий слой абстракции между действием и объектом, который это действие вызывает. Пример - кнопка и действие, которое выполняется при нажатии на эту кнопку.
Паттерн преобразовывает запрос на выполнение действия в отдельный объект-команду.
Поскольку команды - это объекты, с ними можно проводить любые операции, которые в принципе возможны для объектов. Например, их можно передавать как аргументы при вызове методов, ставить в очередь и логировать.
Смотреть реализацию
Команда - один из поведенческих шаблонов, добавляющий слой абстракции между действием и объектом, который это действие вызывает. Пример - кнопка и действие, которое выполняется при нажатии на эту кнопку.
Паттерн преобразовывает запрос на выполнение действия в отдельный объект-команду.
Поскольку команды - это объекты, с ними можно проводить любые операции, которые в принципе возможны для объектов. Например, их можно передавать как аргументы при вызове методов, ставить в очередь и логировать.
Смотреть реализацию
👍11😁1
Шпаргалка по шаблонам проектирования
Описание 23-х шаблонов проектирования из книги "Design Patterns" от Банды четырех. Каждый пункт содержит короткое описание паттерна и UML-диаграмму.
Читать статью
Описание 23-х шаблонов проектирования из книги "Design Patterns" от Банды четырех. Каждый пункт содержит короткое описание паттерна и UML-диаграмму.
Читать статью
🔥18
Вопросы и ответы для подготовки к собеседованию
Авторская подборка ответов к вопросам, которые могут задать на собеседовании Java-разработчику.
Читать статью
Авторская подборка ответов к вопросам, которые могут задать на собеседовании Java-разработчику.
Читать статью
🔥3
Вопрос с собеседования
В чем разница между процедурным программированием и ООП?
Ответ опубликуем вечером, а пока пишите свои варианты в комментариях!
#interview
В чем разница между процедурным программированием и ООП?
Ответ опубликуем вечером, а пока пишите свои варианты в комментариях!
#interview
Вопрос с собеседования
В чем разница между процедурным программированием и ООП?
Ответ:
Процедурное программирование:
- Основано на функциях
- Определяет данные для всей программы
- В нем нет возможности повторного использования кода
- Следует концепции нисходящего программирования
- Природа языка сложна
- Трудно изменять, расширять и поддерживать код
Объектно-ориентированное программирование:
- Основано на реальных объектах
- Инкапсулирует данные
- Обеспечивает больше возможностей для повторного использования кода
- Следует парадигме программирования «снизу вверх»
- Код менее сложен по своей природе, поэтому его легче модифицировать, расширять и поддерживать
#interview
В чем разница между процедурным программированием и ООП?
Ответ:
Процедурное программирование:
- Основано на функциях
- Определяет данные для всей программы
- В нем нет возможности повторного использования кода
- Следует концепции нисходящего программирования
- Природа языка сложна
- Трудно изменять, расширять и поддерживать код
Объектно-ориентированное программирование:
- Основано на реальных объектах
- Инкапсулирует данные
- Обеспечивает больше возможностей для повторного использования кода
- Следует парадигме программирования «снизу вверх»
- Код менее сложен по своей природе, поэтому его легче модифицировать, расширять и поддерживать
#interview
👎23👍14
Топ-5 архитектурных паттернов для распределённых систем
Распределённые приложения позволяют веб-приложениям с огромной аудиторией оставаться реактивными. Чтобы эффективно проектировать эти системы, программисты используют фундаментальные блоки — паттерны распределённых систем.
В этой статье рассматриваем пять архитектур распределённых систем, их плюсы, минусы и области применения.
Читать статью
Распределённые приложения позволяют веб-приложениям с огромной аудиторией оставаться реактивными. Чтобы эффективно проектировать эти системы, программисты используют фундаментальные блоки — паттерны распределённых систем.
В этой статье рассматриваем пять архитектур распределённых систем, их плюсы, минусы и области применения.
Читать статью
Шаблон проектирования Factory Method
Фабричный метод — порождающий паттерн проектирования. Он определяет общий интерфейс для создания объектов в суперклассе, позволяя подклассам изменять тип создаваемых объектов.
Используется, когда:
- классу заранее неизвестно, объекты каких подклассов ему нужно создать
- обязанности делегируются подклассу, а знания о том, какой подкласс принимает эти обязанности, локализованы
- создаваемые объекты родительского класса специализируются подклассами
Применяйте шаблон Фабричный метод в случае, когда хотите без проблем внедрять в вашу программу новые объекты с новыми конфигурациям для взаимодействия с основной бизнес-логикой.
Смотреть реализацию
Фабричный метод — порождающий паттерн проектирования. Он определяет общий интерфейс для создания объектов в суперклассе, позволяя подклассам изменять тип создаваемых объектов.
Используется, когда:
- классу заранее неизвестно, объекты каких подклассов ему нужно создать
- обязанности делегируются подклассу, а знания о том, какой подкласс принимает эти обязанности, локализованы
- создаваемые объекты родительского класса специализируются подклассами
Применяйте шаблон Фабричный метод в случае, когда хотите без проблем внедрять в вашу программу новые объекты с новыми конфигурациям для взаимодействия с основной бизнес-логикой.
Смотреть реализацию
🔥6❤1
Вопрос с собеседования
Что такое KISS?
Ответ опубликуем вечером, а пока пишите свои варианты в комментариях!
#interview
Что такое KISS?
Ответ опубликуем вечером, а пока пишите свои варианты в комментариях!
#interview
Вопрос с собеседования
Что такое KISS?
Ответ:
KISS (аббр. от Keep it short and simple или Keep it simple, stupid) - это принцип проектирования и программирования, запрещающий использование более сложных средств, чем необходимо. Принцип декларирует простоту системы в качестве основной цели и/или ценности.
#interview
Что такое KISS?
Ответ:
KISS (аббр. от Keep it short and simple или Keep it simple, stupid) - это принцип проектирования и программирования, запрещающий использование более сложных средств, чем необходимо. Принцип декларирует простоту системы в качестве основной цели и/или ценности.
#interview
👍12
Архитектура программного обеспечения переоценена, простой и понятный дизайн — недооценен
Автор поделился своим взглядом на проектирование крупномасштабных систем, основанном на собственном практическом опыте работы в Uber и Microsoft.
Читать статью
Автор поделился своим взглядом на проектирование крупномасштабных систем, основанном на собственном практическом опыте работы в Uber и Microsoft.
Читать статью
Паттерн ООП «Хранитель»
«Хранитель» (Memento), также известный как Снимок – поведенческий паттерн проектирования. Он позволяет определять, сохранять, а также восстанавливать предыдущие состояния объектов без нарушения принципа инкапсуляции.
Давайте рассмотрим этот паттерн на примерах.
Читать статью
«Хранитель» (Memento), также известный как Снимок – поведенческий паттерн проектирования. Он позволяет определять, сохранять, а также восстанавливать предыдущие состояния объектов без нарушения принципа инкапсуляции.
Давайте рассмотрим этот паттерн на примерах.
Читать статью
🔥4
Вопрос с собеседования
В чем смысл ООП? Зачем применять такой подход?
Ответ опубликуем вечером, а пока пишите свои варианты в комментариях!
#interview
В чем смысл ООП? Зачем применять такой подход?
Ответ опубликуем вечером, а пока пишите свои варианты в комментариях!
#interview
Вопрос с собеседования
В чем смысл ООП? Зачем применять такой подход?
Ответ:
ООП позволяет повторно использовать код. Данные и код связаны вместе с помощью инкапсуляции. ООП имеет возможности для сокрытия данных, поэтому частные данные могут храниться и сохранять конфиденциальность. Задачи могут быть разделены на различные части, что упрощает их решение. Концепция полиморфизма обеспечивает гибкость, так как одна сущность может иметь несколько форм.
#interview
В чем смысл ООП? Зачем применять такой подход?
Ответ:
ООП позволяет повторно использовать код. Данные и код связаны вместе с помощью инкапсуляции. ООП имеет возможности для сокрытия данных, поэтому частные данные могут храниться и сохранять конфиденциальность. Задачи могут быть разделены на различные части, что упрощает их решение. Концепция полиморфизма обеспечивает гибкость, так как одна сущность может иметь несколько форм.
#interview
👎15👍4
Шаблон проектирования Composite
Компоновщик - структурный паттерн проектирования. Он позволяет сгруппировать множество объектов в древовидную структуру, а затем работать с ней так, как будто это единичный объект.
Достоинства паттерна:
- в систему легко добавлять новые примитивные или составные объекты, так как паттерн Composite использует общий базовый класс Component
- код клиента имеет простую структуру – примитивные и составные объекты обрабатываются одинаковым образом
- паттерн позволяет легко обойти все узлы древовидной структуры
Смотреть реализацию
Компоновщик - структурный паттерн проектирования. Он позволяет сгруппировать множество объектов в древовидную структуру, а затем работать с ней так, как будто это единичный объект.
Достоинства паттерна:
- в систему легко добавлять новые примитивные или составные объекты, так как паттерн Composite использует общий базовый класс Component
- код клиента имеет простую структуру – примитивные и составные объекты обрабатываются одинаковым образом
- паттерн позволяет легко обойти все узлы древовидной структуры
Смотреть реализацию
❤6👍1