Паттерн «Супертип слоя» (Layer Supertype). Описание и пример использования

Супертип слоя – тип (класс), который является базовым для всех типов (классов) своего уровня.

Паттерн описан Мартином Фаулером в [1]. Его суть состоит в следующем.

Если хотя бы несколько классов (в идеале все классы) одного слоя имеют в своём составе однотипные члены, то эти члены целесообразно вынести в базовый класс. Что позволяет избежать повторений в коде и в некоторой степени даже повысить гибкость архитектуры.

Рассмотрим пример на Java.

Допустим, есть два класса, которые представляют собой некие сущности на основании базы данных с использованием Hibernate (связывание через JPA).

Первый класс:

Второй класс:

Если внимательно проанализировать код обоих классов, можно заметить, что у них есть следующие идентичные члены:

  • Поле id для первичного ключа;
  • Геттеры и сеттеры для поля id.

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

Ниже приведён код этого класса:

После введения базового класса код классов Product и Bill примет следующий вид.

Класс Product:

Класс Bill:

Справедливости ради стоит отметить, что для паттерна «Супертип слоя» ранее уже был приведён  похожий пример на C#. Только тогда этот паттерн рассматривался в контексте использования паттерна «Репозиторий» в качестве модели для ASP.NET MVC [2].

Источники
  1. М.Фаулер. Архитектура корпоративных программных приложений
  2. Стрелец Coder. Паттерн «Репозиторий» в качестве модели в ASP.NET MVC

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *