2016-05-13 2 views
2

Допустим, у меня есть следующая структура в Java:Дизайн Шаблоны - что это за шаблон?

@MappedSuperClass 
public class User extends AbstractEntity { ... } 

@Entity 
public class SuperUser extends User { ... } 

@Entity 
public class RegularUser extends User { ... } 

Этот проект построен в RESTful конечных точек с 3 слоями (ресурсы, услуги и Хранилища) с родовыми абстракций:

public class AbstractRepository<T extends AbstractEntity> { ... } 

теперь я хочу иметь несколько методов БД выполняются по всем типам User, поэтому я создал этот Repository слой:

public class UserRepository extends AbstractRepository<User> { ... } 

Можно ли назвать его адаптером или, может быть, мостом, поскольку его исполняющая логика как бы инкапсулирует функциональность двух других классов (RegularUserRepository и SuperUserRepository)?

+1

Я думаю, вы имеете в виду 'AbstractRepository '? – shmosel

+1

Итак, каждый суперкласс теперь является шаблоном дизайна? – shmosel

+0

Существует шаблон делегата. В случае, если 'UserRepository' использует' RegularUserRepository' и 'SuperUserRepository' для делегирования его работы. Я бы не назвал этот Адаптер, так как вы не адаптируетесь от a к b, и я бы не назвал его мостом, потому что нет ничего намеренного отделить реализацию от абстракции. – zapl

ответ

1

Здесь нет шаблона проектирования Gang-of-Four. Существует два вида полиморфизма.

  1. Subtype Polymorphism - из-за отношения наследования между User и его дочерними классами.
  2. Parametric Polymorphism - из-за общих отношений между AbstractRepository и AbstractEntity.
Смежные вопросы