Архитектурные паттерны – высшего уровня, они описывают структуру всего продукта. А паттерны проектирования применяются уже на уровне конкретных объектов, алгоритмов и частей программы. Если упростить, архитектурный паттерн отвечает на вопрос «как будет устроен продукт». Например, модель MVC — архитектурный паттерн.
Какие виды проектирования вы знаете?
Виды проектирования:
- Разработка схем инженерных систем:
- Электроснабжение
- Водоснабжение
- Канализация
- Газоснабжение
- Проектирование в строительстве:
- Частное строительство
- Архитектурное проектирование
- Городское планирование
- Дизайн:
- Ландшафтный дизайн
- Дизайн интерьера
- Дизайн одежды
- Проектирование в компьютерной среде:
- Программирование (создание программных продуктов)
Проектирование играет важнейшую роль в различных отраслях и является межотраслевой сферой деятельности. Оно позволяет создавать технически обоснованные, эстетически привлекательные и экономически выгодные решения для широкого спектра задач.
Какие бывают стадии проектирования?
Стадии проектирования
- Технико-экономическое обоснование (ТЭО): Определяет целесообразность и эффективность инвестиций в проект.
- Технико-экономический расчет (ТЭР): Детализирует расчеты и обосновывает финансовые показатели проекта.
- Эскизный проект (ЭП): Определяет основные архитектурные, конструктивные и инженерные решения.
- Проект (П): Разрабатывает все необходимые чертежи, спецификации и сметную документацию.
- Рабочий проект (РП): Подробно описывает все строительные и монтажные работы с указанием материалов, технологий и последовательности выполнения.
- Рабочая документация (Р): Содержит инструкции для непосредственного осуществления строительства.
Важная информация: * Разработка проектной документации является обязательной частью инвестиционно-строительного цикла. * Каждая стадия имеет свои сроки, стоимость и требования к содержанию документации. * Проектирование может осуществляться как самостоятельно, так и с привлечением специализированных организаций. * Выбор стадии проектирования зависит от масштаба и сложности объекта. * Качественно подготовленная проектная документация способствует экономии времени и средств на всех этапах реализации проекта.
Сколько существует стадий проектирования?
Всего есть две основные стадии проектирования П и РД. П — Проектная документация, РД — Рабочая документация. Также есть предпроектные решения.
В чем смысл Singleton?
Singleton относится к порождающим паттернам. Его дословный перевод – одиночка. Этот паттерн гарантирует, что у класса есть только один объект (один экземпляр класса) и к этому объекту предоставляется глобальная точка доступа.
Почему не советуют использовать Singleton?
Паттерн «Одиночка» и сложность юнит-тестирования Паттерн «Одиночка» — это анти-паттерн, который создает глобальное состояние, затрудняя юнит-тестирование. Это происходит потому, что Singleton обеспечивает единственную точку доступа к объекту, создавая зависимость от него для других классов. Юнит-тестирование — это процесс изолированного тестирования отдельных классов. При использовании Singleton классы, зависящие от него, не могут быть изолированы для тестирования, что приводит к следующим проблемам: * Сложность установки фикстур: Невозможно установить разные конфигурации объекта Singleton для каждого теста, что затрудняет тестирование различных сценариев. * Конфликты при параллельном тестировании: Тесты, работающие с тем же объектом Singleton, могут конфликтовать друг с другом, что приводит к ненадежным результатам тестирования. * Подверженность внешнему вмешательству: Изменения в коде, внесенные за пределами класса Singleton, могут непреднамеренно повлиять на другие классы, полагающиеся на него. Альтернативные подходы: Для устранения этих проблем рекомендуется использовать альтернативные подходы: * Dependency Injection: Предоставление зависимостей классам через конструктор или метод установки позволяет изолировать их для тестирования. * Фабричный метод: Создание объектов через фабричный метод позволяет изменять способ создания объекта во время тестирования. * Имитация: Использование макетов или имитаторов для замены объекта Singleton облегчает тестирование зависимых классов. Использование этих альтернатив помогает улучшить тестируемость кода, делая его более модульным, проверяемым и устойчивым к изменениям.
Почему Singleton плох?
Тестирование, осложненное глобальной доступностью.
- Доступность синглтона отовсюду приводит к зависимости всего кода от него.
- Сложно изолировать и смоделировать поведение, зависящее от синглтона.