Статьи

Первоклассная система типов процедур для объектно-ориентированной композиции

Это первая статья в серии, посвященная системам типа Inversion of Coupling Control. Серия покажет, как полученная система типов позволяет легко составлять. Это позволяет нам избежать значительной сложности функциональной / объектно-ориентированной композиции.

В этой серии четыре статьи:

  • В этой статье обсуждается система типов процедур первого класса
  • Первоклассный модуль
  • Демонстрационное приложение.
  • Основная теоретическая модель для композиции.

Первоклассная процедура

В этой статье мы рассмотрим систему типов и состав процедур первого класса .

Ранее мы уже говорили о матрице ОО и о том, как метод (и в этом отношении функция) страдает от связи. Мы также обсудили, как эта связь может быть уменьшена с помощью  инверсии управления сцеплением . Мы также показали, как эти перевернутые методы / функции можно легко объединить . Мы даже видели, как индустрия движется к этим концепциям с помощью микросервисов .

То, что мы еще не обсуждали, это система типов и композиция, доступные в Первоклассных Процедурах.

Чтобы обсудить это, давайте начнем с хорошо известной концепции внедрения зависимостей.


Вам также может понравиться:
Локальные микросервисы: первоклассные процедуры .

Внедрение зависимости

Метаданные внедрения зависимостей описывают список зависимостей со следующими тремя атрибутами:

  • Поле (или параметр конструктора) для внедрения зависимости (предоставляя имя зависимости — например, имя поля)
  • Тип зависимости
  • Необязательный квалификатор (различает зависимости одного типа)

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

Продолжение впрыска

Внедрение продолжения сводит вызов функции / метода к такому же простому набору атрибутов (аналогично внедрению зависимости).

Поскольку может быть передан только один параметр (остальные являются зависимыми), требуется только один тип. Это необязательный тип параметра. Кроме того, продолжения от Первоклассной Процедуры все названы.

Обратите внимание, что автоматическое продолжение считается подверженным ошибкам. Для автоматического подключения продолжения к процедурам первого класса требуются разные типы параметров для каждого продолжения в системе. На практике большую часть времени это те же самые простые типы данных предметной области, которые передаются. Таким образом, вам в конечном итоге придется квалифицировать каждое продолжение.

Кроме того, квалификационные продолжения обеспечивают небольшое улучшение в снижении сложности. При квалификации всех продолжений вы заканчиваете тем, что пишете конфигурации для каждого продолжения. Другими словами, вы в конечном итоге предоставляете сопоставление каждого имени продолжения с обслуживанием процедуры первого класса. Эта конфигурация очень подвержена ошибкам. Мы покажем, как это делается менее подверженным ошибкам и может быть легко понятным в ближайшее время.

Следовательно, каждое требуемое продолжение с помощью процедуры первого класса описывается следующими метаданными:

  • Название продолжения.
  • Тип параметра для продолжения (т.е. тип аргумента, отправляемого в продолжение).

Обратите внимание, что исключения из метода / функции также моделируются как продолжения. Тип является типом исключения. Имя — это имя типа исключения.

Первоклассная система типов процедур

Соединяя метаданные Continuction Injection с метаданными Dependency Injection, мы получаем следующую информацию о метаданных (тип) для процедуры первого класса:


Джава