Вопрос с собеседования
Что такое 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
Порождающие шаблоны проектирования простым языком
Порождающие шаблоны — шаблоны проектирования, которые абстрагируют процесс инстанцирования. Они позволяют сделать систему независимой от способа создания, композиции и представления объектов. Шаблон, порождающий классы, использует наследование, чтобы изменять наследуемый класс, а шаблон, порождающий объекты, делегирует инстанцирование другому объекту.
Обо всем этом, но простыми словами и с примерами кода - читайте в статье.
Читать статью
Порождающие шаблоны — шаблоны проектирования, которые абстрагируют процесс инстанцирования. Они позволяют сделать систему независимой от способа создания, композиции и представления объектов. Шаблон, порождающий классы, использует наследование, чтобы изменять наследуемый класс, а шаблон, порождающий объекты, делегирует инстанцирование другому объекту.
Обо всем этом, но простыми словами и с примерами кода - читайте в статье.
Читать статью
👍2
Шаблон проектирования Proxy
Заместитель - структурный паттерн проектирования. Он позволяет подставлять вместо реальных объектов специальные объекты-заменители. Эти объекты перехватывают вызовы к оригинальному объекту, позволяя сделать что-то до или после передачи вызова оригиналу.
Ситуации, когда можно использовать паттерн Заместитель:
- Виртуальный proxy является заместителем объектов, создание которых обходится дорого. Реальный объект создается только при первом запросе/доступе клиента к объекту
- Удаленный proxy предоставляет локального представителя для объекта, который находится в другом адресном пространстве ("заглушки" в RPC и CORBA)
- Защитный proxy контролирует доступ к основному объекту. "Суррогатный" объект предоставляет доступ к реальному объекту, только вызывающий объект имеет соответствующие права
- Интеллектуальный proxy выполняет дополнительные действия при доступе к объекту.
Смотреть реализацию
Заместитель - структурный паттерн проектирования. Он позволяет подставлять вместо реальных объектов специальные объекты-заменители. Эти объекты перехватывают вызовы к оригинальному объекту, позволяя сделать что-то до или после передачи вызова оригиналу.
Ситуации, когда можно использовать паттерн Заместитель:
- Виртуальный proxy является заместителем объектов, создание которых обходится дорого. Реальный объект создается только при первом запросе/доступе клиента к объекту
- Удаленный proxy предоставляет локального представителя для объекта, который находится в другом адресном пространстве ("заглушки" в RPC и CORBA)
- Защитный proxy контролирует доступ к основному объекту. "Суррогатный" объект предоставляет доступ к реальному объекту, только вызывающий объект имеет соответствующие права
- Интеллектуальный proxy выполняет дополнительные действия при доступе к объекту.
Смотреть реализацию
👍5
Структурные шаблоны проектирования простым языком
Структурные шаблоны — шаблоны проектирования, в которых рассматривается вопрос о том, как из классов и объектов образуются более крупные структуры.
В этой статье рассматриваем на примерах такие шаблоны, как адаптер, мост, компоновщик, декоратор, фасад, приспособленец, заместитель.
Читать статью
Структурные шаблоны — шаблоны проектирования, в которых рассматривается вопрос о том, как из классов и объектов образуются более крупные структуры.
В этой статье рассматриваем на примерах такие шаблоны, как адаптер, мост, компоновщик, декоратор, фасад, приспособленец, заместитель.
Читать статью
👍4
Вопрос с собеседования
Что такое SOLID?
Ответ опубликуем вечером, а пока пишите свои варианты в комментариях!
#interview
Что такое SOLID?
Ответ опубликуем вечером, а пока пишите свои варианты в комментариях!
#interview
Вопрос с собеседования
Что такое SOLID?
Ответ:
SOLID - акроним для пяти основных принципов объектно-ориентированного программирования и проектирования.
Список принципов по порядку: single responsibility, open-closed, Liskov substitution, interface segregation и dependency inversion (русск. - принципы единственной ответственности, открытости/закрытости, подстановки Барбары Лисков, разделения интерфейса и инверсии зависимостей).
Применение всех этих принципов повышает вероятность того, что систему ПО будет легко поддерживать и расширять в течение долгого времени.
Принципы SOLID могут применяться для удаления запахов кода, предписывая программисту выполнять рефакторинг исходного кода, пока тот не станет читаемым и расширяемым. Это часть общей стратегии гибкой и адаптивной разработки.
#interview
Что такое SOLID?
Ответ:
SOLID - акроним для пяти основных принципов объектно-ориентированного программирования и проектирования.
Список принципов по порядку: single responsibility, open-closed, Liskov substitution, interface segregation и dependency inversion (русск. - принципы единственной ответственности, открытости/закрытости, подстановки Барбары Лисков, разделения интерфейса и инверсии зависимостей).
Применение всех этих принципов повышает вероятность того, что систему ПО будет легко поддерживать и расширять в течение долгого времени.
Принципы SOLID могут применяться для удаления запахов кода, предписывая программисту выполнять рефакторинг исходного кода, пока тот не станет читаемым и расширяемым. Это часть общей стратегии гибкой и адаптивной разработки.
#interview
👍7
Шаблон проектирования Observer
Наблюдатель - поведенческий паттерн проектирования. Определяет зависимость типа "один ко многим" между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом и автоматически обновляются.
Когда применять:
- когда после изменения состояния одного объекта требуется что-то сделать в других, но вы не знаете наперёд, какие именно объекты должны отреагировать
- когда одни объекты должны наблюдать за другими, но только в определённых случаях.
Смотреть реализацию
Наблюдатель - поведенческий паттерн проектирования. Определяет зависимость типа "один ко многим" между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом и автоматически обновляются.
Когда применять:
- когда после изменения состояния одного объекта требуется что-то сделать в других, но вы не знаете наперёд, какие именно объекты должны отреагировать
- когда одни объекты должны наблюдать за другими, но только в определённых случаях.
Смотреть реализацию
👍8
Вопрос с собеседования
Каковы основные концепции ООП?
Ответ опубликуем вечером, а пока пишите свои варианты в комментариях!
#interview
Каковы основные концепции ООП?
Ответ опубликуем вечером, а пока пишите свои варианты в комментариях!
#interview
👍4👎1
Вопрос с собеседования
Каковы основные концепции ООП?
Ответ:
- Наследование
- Инкапсуляция
- Полиморфизм
- Абстракция
#interview
Каковы основные концепции ООП?
Ответ:
- Наследование
- Инкапсуляция
- Полиморфизм
- Абстракция
#interview
👍8👎3
Шаблон проектирования Prototype
Прототип - порождающий паттерн проектирования. Он позволяет копировать объекты, не вдаваясь в подробности их реализации.
Когда использовать Прототип?
- Когда конкретный тип создаваемого объекта должен определяться динамически во время выполнения
- Когда нежелательно создание отдельной иерархии классов фабрик для создания объектов-продуктов из параллельной иерархии классов (как это делается, например, при использовании паттерна Абстрактная фабрика)
- Когда клонирование объекта является более предпочтительным вариантом, чем его создание и инициализация с помощью конструктора. Особенно если известно, что объект может принимать небольшое ограниченное число возможных состояний.
Смотреть реализацию
Прототип - порождающий паттерн проектирования. Он позволяет копировать объекты, не вдаваясь в подробности их реализации.
Когда использовать Прототип?
- Когда конкретный тип создаваемого объекта должен определяться динамически во время выполнения
- Когда нежелательно создание отдельной иерархии классов фабрик для создания объектов-продуктов из параллельной иерархии классов (как это делается, например, при использовании паттерна Абстрактная фабрика)
- Когда клонирование объекта является более предпочтительным вариантом, чем его создание и инициализация с помощью конструктора. Особенно если известно, что объект может принимать небольшое ограниченное число возможных состояний.
Смотреть реализацию
👍2
Вопрос с собеседования
Что такое DRY principles?
Ответ опубликуем вечером, а пока пишите свои варианты в комментариях!
#interview
Что такое DRY principles?
Ответ опубликуем вечером, а пока пишите свои варианты в комментариях!
#interview
Вопрос с собеседования
Что такое DRY principles?
Ответ:
DRY, Don't repeat yourself (не повторяйся) - это принцип разработки программного обеспечения, нацеленный на снижение повторения информации различного рода, особенно в системах со множеством слоёв абстрагирования.
Простыми словами: НЕ пишите повторяющийся код, используйте принцип абстракции, обобщая простые вещи в одном месте.
#interview
Что такое DRY principles?
Ответ:
DRY, Don't repeat yourself (не повторяйся) - это принцип разработки программного обеспечения, нацеленный на снижение повторения информации различного рода, особенно в системах со множеством слоёв абстрагирования.
Простыми словами: НЕ пишите повторяющийся код, используйте принцип абстракции, обобщая простые вещи в одном месте.
#interview
Шаблон проектирования Strategy
Стратегия относится к поведенческим шаблонам проектирования. Цель этого паттерна - выделить схожие алгоритмы, решающие конкретную задачу. Реализация алгоритмов выносится в отдельные классы и предоставляется возможность выбирать алгоритмы во время выполнения программы.
Давайте рассмотрим принципы и суть шаблона Стратегия на примерах.
Читать статью
Стратегия относится к поведенческим шаблонам проектирования. Цель этого паттерна - выделить схожие алгоритмы, решающие конкретную задачу. Реализация алгоритмов выносится в отдельные классы и предоставляется возможность выбирать алгоритмы во время выполнения программы.
Давайте рассмотрим принципы и суть шаблона Стратегия на примерах.
Читать статью
👍5
Шаблон проектирования Chain of Responsibility
Цепочка обязанностей - поведенческий паттерн проектирования. Он позволяет передавать запросы по цепочке обработчиков последовательно. Каждый последующий обработчик решает, может ли он обработать запрос сам и стоит ли передавать запрос дальше по цепи.
Самый наглядный пример шаблона — компьютерная сеть. Пусть в сетевой модели есть 4 типа обработчиков — сеть, маршрутизатор, форвардер и сервер. Также есть всего один тип запроса — запрос на обработку сервером. Обработчики ведут себя следующим образом: сеть — просто предает по своей среде запрос, маршрутизатор — передает запрос из одной сети в другую, форвардер — передает запрос конкретному хосту, сервер — обрабатывает запрос.
Узлы сети представляют собой конвейер обработчиков. Запрос — конкретное сообщение. Запрос, двигаясь по цепочке, обрабатывается (маршрутизируется, форвардится) каждым ее узлом и передается дальше. До тех пор, пока не будет окончательно обработан сервером.
Смотреть реализацию
Цепочка обязанностей - поведенческий паттерн проектирования. Он позволяет передавать запросы по цепочке обработчиков последовательно. Каждый последующий обработчик решает, может ли он обработать запрос сам и стоит ли передавать запрос дальше по цепи.
Самый наглядный пример шаблона — компьютерная сеть. Пусть в сетевой модели есть 4 типа обработчиков — сеть, маршрутизатор, форвардер и сервер. Также есть всего один тип запроса — запрос на обработку сервером. Обработчики ведут себя следующим образом: сеть — просто предает по своей среде запрос, маршрутизатор — передает запрос из одной сети в другую, форвардер — передает запрос конкретному хосту, сервер — обрабатывает запрос.
Узлы сети представляют собой конвейер обработчиков. Запрос — конкретное сообщение. Запрос, двигаясь по цепочке, обрабатывается (маршрутизируется, форвардится) каждым ее узлом и передается дальше. До тех пор, пока не будет окончательно обработан сервером.
Смотреть реализацию
👍3
Вопрос с собеседования
Что такое инкапсуляция?
Ответ опубликуем завтра, а пока пишите свои варианты в комментариях!
#interview
Что такое инкапсуляция?
Ответ опубликуем завтра, а пока пишите свои варианты в комментариях!
#interview