# UML

35 posts tagged UML. See all posts

📈 Management · 💻 Programming · 👷‍♀️ Software Architecture

Best Practices for Effective Software Architecture Documentation

Explore essential techniques for effective software architecture documentation, including Architecture Decision Records (ADRs), Requests for Comments (RFCs), Event Storming, the C4 Model, and Non-Functional Requirements (NFRs). Learn how these methods help maintain, scale, and evolve your system architecture while ensuring clarity for both technical and non-technical stakeholders.

❓ Common Interview Questions · 💻 Programming · 👷‍♀️ Software Architecture

Паттерны Metadata Mapping и Query Object из каталога PoEAA

В статье мы поговорим про Object-Relational Metadata Mapping Patterns из каталога паттернов для архитектуры корпоративных приложений (PoeAA). Мы рассмотрим назначение каждого из них, а так же сильные и слабые стороны. 

💻 Programming · 👷‍♀️ Software Architecture

Объектно-реляционные структурные паттерны (PoEAA)

В статье мы поговорим про Object-Relational Structural Patterns из каталога паттернов для архитектуры корпоративных приложений (PoEAA). Мы рассмотрим назначение каждого из них, а так же сильные и слабые стороны. 

❓ Common Interview Questions · 💻 Programming · 👷‍♀️ Software Architecture

Паттерны архитектуры источников данных (PoEAA)

Рассматриваем в статье 4 паттерна из Архитектурных  паттернов источников данных PoEAA:

Row Data Gateway (Шлюз к данным записи)

Active Record (Активная запись)

Table Data Gateway (Шлюз к данным таблицы)

Data Mapper

📋 Cheat Sheets · ❓ Common Interview Questions · 💻 Programming · 👷‍♀️ Software Architecture

Шаблоны проектирования "банды четырёх (GoF)"

Статья о Шаблонах (или паттернах) проектирования. Паттерны описывают типичные способы решения часто встречающихся проблем при проектировании программ.

💻 Programming

Поведенческие паттерны: Хранитель (Memento) C#

В данной статье мы рассматриваем Поведенческий шаблон проектирования "Memento" и его реализацию на .NET

Назначение:

Паттерн Хранитель (Memento) — позволяет выносить внутреннее состояние объекта за его пределы для последующего возможного восстановления объекта без нарушения принципа инкапсуляции.

  • Не нарушая инкапсуляции, паттерн Memento получает и сохраняет за пределами объекта его внутреннее состояние так, чтобы позже можно было восстановить объект в таком же состоянии.
  • Является средством для инкапсуляции "контрольных точек" программы.
  • Паттерн Memento придает операциям "Отмена" (undo) или "Откат" (rollback) статус "полноценного объекта".

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

  • Когда нужно сохранить состояние объекта для возможного последующего восстановления;

  • Когда сохранение состояния должно проходить без нарушения принципа инкапсуляции;

💻 Programming

Поведенческие паттерны: Интерпретатор (Interpreter) C#

В данной статье мы рассматриваем поведенческий шаблон проектирования "Интерпретатор" и его реализацию на .NET

Назначение:

Паттерн Интерпретатор (Interpreter) определяет представление грамматики для заданного языка и интерпретатор предложений этого языка. Как правило, данный шаблон проектирования применяется для часто повторяющихся операций.

Когда использовать Паттерн Interpreter:

Интерпретатор следует использовать когда вам  необходимо интерпретировать запись в другом языке и тд. Как один из примеров может служить перевод римских цифр в арабские.

💻 Programming

Структурные паттерны: Приспособленец (Flyweight) C#

В данной статье мы рассматриваем структурный шаблон проектирования "Flyweight" и его реализацию на .NET

Назначение:

Паттерн Приспособленец (Flyweight) - шаблон проектирования, который позволяет использовать разделяемые объекты сразу в нескольких контекстах. Данный паттерн используется преимущественно для оптимизации работы с памятью.

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

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

  • в приложении используется большое число очень схожих экземпляров заданного класса;
  • (и) часть состояния объекта является контекстной и может быть легко вынесена во внешние структуры;
  • (и) после вынесения части состояния, все экземпляры становятся одинаковыми и это дает возможность заменить их одним;
  • (и) приложение не проверяет идентичность объектов, т.к. в этом случае все якобы самостоятельные экземпляры являются одним объектом.
💻 Programming

Порождающие паттерны: Прототип (Prototype) C#

В данной статье мы рассматриваем порождающий шаблон проектирования "Прототип" и его реализацию на .NET

Назначение:

Прототип —​ позволяет создавать новые объекты путем клонирования уже существующих. По сути данный паттерн предлагает технику клонирования объектов.

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

  1. Класс порождаемого объекта определяется в момент выполнения.
  2. Когда желательно избежать наследования создателя объекта. В этом случае, Прототип является конкурентом Абстрактной фабрики.

  3. Когда клонирование объекта является более предпочтительным вариантом нежели его создание и инициализация с помощью конструктора.

  4. Когда создание копии объекта проще и быстрее, чем порождение его стандартным путем, используя операцию new и включая инициализацию полей.

💻 Programming

Структурные паттерны: Мост (Bridge) C#

В данной статье мы рассматриваем структурный паттерн "Мост" и его реализацию на .NET

Назначение:

Мост (Bridge) - структурный шаблон проектирования, который позволяет отделить абстракцию от реализации таким образом, чтобы и абстракцию, и реализацию можно было изменять независимо друг от друга.

Шаблон Мост предполагает, что основной код, необходимый для функционирования объекта, переносится в реализацию. Всё остальное, включая взаимодействие с клиентом, содержится в абстракции. Её методы, при необходимости, могут быть изменены или дополнены. Кроме того, она содержит экземпляр реализации и использует его для обработки поступающих от клиентов запросов. Под обработкой подразумевается как прямая переадресация запроса, так и вызов группы методов реализации для получения результата.

Когда использовать паттерн мост?

  • Когда надо избежать постоянной привязки абстракции к реализации

  • Когда наряду с реализацией надо изменять и абстракцию независимо друг от друга. То есть изменения в абстракции не должно привести к изменениям в реализации