Pattern Guru. Шаблоны проектирования. Архитектура ПО
3.13K subscribers
201 photos
4 videos
93 links
Патерны программирования.
Архитектура ПО.
Микросервисы

@anothertechrock
Download Telegram
Вопрос с собеседования

Что такое SOLID?

Ответ:

SOLID - акроним для пяти основных принципов объектно-ориентированного программирования и проектирования.

Список принципов по порядку: single responsibility, open-closed, Liskov substitution, interface segregation и dependency inversion (русск. - принципы единственной ответственности, открытости/закрытости, подстановки Барбары Лисков, разделения интерфейса и инверсии зависимостей).

Применение всех этих принципов повышает вероятность того, что систему ПО будет легко поддерживать и расширять в течение долгого времени.

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

#interview
👍7
Шаблон проектирования Observer

Наблюдатель - поведенческий паттерн проектирования. Определяет зависимость типа "один ко многим" между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом и автоматически обновляются.

Когда применять:

- когда после изменения состояния одного объекта требуется что-то сделать в других, но вы не знаете наперёд, какие именно объекты должны отреагировать
- когда одни объекты должны наблюдать за другими, но только в определённых случаях.

Смотреть реализацию
👍8
Вопрос с собеседования

Каковы основные концепции ООП?

Ответ опубликуем вечером, а пока пишите свои варианты в комментариях!

#interview
👍4👎1
Вопрос с собеседования

Каковы основные концепции ООП?

Ответ:

- Наследование
- Инкапсуляция
- Полиморфизм
- Абстракция

#interview
👍8👎3
Шаблон проектирования Prototype

Прототип - порождающий паттерн проектирования. Он позволяет копировать объекты, не вдаваясь в подробности их реализации.

Когда использовать Прототип?

- Когда конкретный тип создаваемого объекта должен определяться динамически во время выполнения
- Когда нежелательно создание отдельной иерархии классов фабрик для создания объектов-продуктов из параллельной иерархии классов (как это делается, например, при использовании паттерна Абстрактная фабрика)
- Когда клонирование объекта является более предпочтительным вариантом, чем его создание и инициализация с помощью конструктора. Особенно если известно, что объект может принимать небольшое ограниченное число возможных состояний.

Смотреть реализацию
👍2
Вопрос с собеседования

Что такое DRY principles?

Ответ опубликуем вечером, а пока пишите свои варианты в комментариях!

#interview
Вопрос с собеседования

Что такое DRY principles?

Ответ:

DRY, Don't repeat yourself (не повторяйся) - это принцип разработки программного обеспечения, нацеленный на снижение повторения информации различного рода, особенно в системах со множеством слоёв абстрагирования.

Простыми словами: НЕ пишите повторяющийся код, используйте принцип абстракции, обобщая простые вещи в одном месте.

#interview
Шаблон проектирования Chain of Responsibility

Цепочка обязанностей - поведенческий паттерн проектирования. Он позволяет передавать запросы по цепочке обработчиков последовательно. Каждый последующий обработчик решает, может ли он обработать запрос сам и стоит ли передавать запрос дальше по цепи.

Самый наглядный пример шаблона — компьютерная сеть. Пусть в сетевой модели есть 4 типа обработчиков — сеть, маршрутизатор, форвардер и сервер. Также есть всего один тип запроса — запрос на обработку сервером. Обработчики ведут себя следующим образом: сеть — просто предает по своей среде запрос, маршрутизатор — передает запрос из одной сети в другую, форвардер — передает запрос конкретному хосту, сервер — обрабатывает запрос.

Узлы сети представляют собой конвейер обработчиков. Запрос — конкретное сообщение. Запрос, двигаясь по цепочке, обрабатывается (маршрутизируется, форвардится) каждым ее узлом и передается дальше. До тех пор, пока не будет окончательно обработан сервером.

Смотреть реализацию
👍3
Вопрос с собеседования

Что такое инкапсуляция?

Ответ опубликуем завтра, а пока пишите свои варианты в комментариях!

#interview
Вопрос с собеседования

Что такое инкапсуляция?

Ответ:

Инкапсуляция является частью концепции ООП. Она относится к объединению данных с методами, которые работают с этими данными. Это также помогает ограничить любой прямой доступ к некоторым компонентам объекта.

#interview
👎1
Подводные камни Singleton: почему самый известный шаблон проектирования нужно использовать с осторожностью

Паттерн «Одиночка» — пожалуй, самый известный паттерн проектирования. Тем не менее, он не лишен недостатков, поэтому некоторые программисты считают его антипаттерном. Разбираемся в том, какие же подводные камни таятся в Singleton’е.

Читать статью
👍6
Вопрос с собеседования

Что такое Open/closed principle?

Ответ опубликуем вечером, а пока пишите свои варианты в комментариях!

#interview
Вопрос с собеседования

Что такое Open/closed principle?

Ответ:

Open/closed principle - принцип объектно-ориентированного программирования, устанавливающий следующее положение:

"Программные сущности (классы, модули, функции и т. п.) должны быть открыты для расширения, но закрыты для изменения".

Это означает, что такие сущности могут позволять менять свое поведение без изменения их исходного кода.

#interview
Вопрос с собеседования

Что такое переопределение методов?

Ответ опубликуем вечером, а пока пишите свои варианты в комментариях!

#interview
Вопрос с собеседования

Что такое переопределение методов?

Ответ:

Переопределение методов – это концепция объектно-ориентированного программирования. Это особенность языка, позволяющая подклассу или дочернему классу предоставлять конкретную реализацию метода, который уже предоставлен одним из его суперклассов или родительских классов.

#interview
Вопрос с собеседования

Что такое GRASP?

Ответ опубликуем позже вечером, а пока пишите свои варианты в комментариях!

#interview
🤔4👍2🔥1
Вопрос с собеседования

Что такое наследование?

Ответ опубликуем завтра, а пока пишите свои варианты в комментариях!

#interview
Вопрос с собеседования

Что такое наследование?

Ответ:

Если вы порождаете класс от другого класса, это называется наследованием.

Дочерний класс наследует все публичные и защищенные свойства и методы от родительского класса. Дочерний класс также может иметь свои собственные свойства и методы. Наследуемый класс определяется с помощью ключевого слова extends.

Множественное наследование - это когда класс наследует более одного базового класса. Пример: класс, объясняющий ребенка. Этот класс – ребенок – наследует от двух базовых классов, которыми являются мать и отец.

Многоуровневое наследование - это когда класс наследуется от другого класса, который сам является подклассом какого-то другого базового класса. Пример: класс под названием спортивный велосипед, который наследуется от базового класса велосипед. В свою очередь, класс велосипед наследуется от другого класса транспортное средство.

#interview
👍4
Вопрос с собеседования

Что такое Liskov substitution principle?

Ответ опубликуем завтра, а пока пишите свои варианты в комментариях!

#interview
Вопрос с собеседования

Что такое Liskov substitution principle?

Ответ:

Liskov substitution principle - принцип подстановки Барбары Лисков.

Роберт С. Мартин определил этот принцип так:

"Функции, которые используют базовый тип, должны иметь возможность использовать подтипы базового типа, не зная об этом".

Более простыми словами принцип звучит так:

"Наследующий класс должен дополнять, а не замещать поведение базового класса".

Суть принципа в следующем. Если у нас есть класс A и унаследованный от него класс B, то если мы заменим все использования класса A на B, ничего не должно измениться в работе программы. Ведь класс B всего лишь расширяет функционал класса A.

#interview
👍4
Вопрос с собеседования

Что такое иерархическое наследование?

Ответ опубликуем завтра, а пока пишите свои варианты в комментариях!

#interview