2016-05-13 37 views
2

Lets sagen, dass ich die folgende Struktur in Java haben:Entwurfsmuster - Welches Muster ist das?

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

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

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

Dieses Projekt in RESTful-Endpunkte mit 3 Schichten aufgebaut ist (Ressourcen, Dienste und Repositorys) mit generischen Abstraktionen:

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

jetzt will ich einige DB-Methoden über alle Arten von User ausgeführt haben, so habe ich diese Repository-Schicht:

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

Kann man es als Adapter oder vielleicht Bridge bezeichnen, da seine Ausführungslogik die Funktionalität zweier anderer Klassen (RegularUserRepository und SuperUserRepository) einkapselt?

+1

Ich denke, Sie meinen 'AbstractRepository '? – shmosel

+1

Also ist jede Oberklasse jetzt ein Designmuster? – shmosel

+0

Es gibt ein Delegatenmuster Wenn 'UserRepository '' RegularUserRepository' und 'SuperUserRepository' verwendet, um seine Arbeit zu delegieren. Ich würde diesen Adapter nicht nennen, da Sie sich nicht von a nach b anpassen, und ich würde es nicht Bridge nennen, weil nichts beabsichtigt ist, um die Implementierung von der Abstraktion zu entkoppeln. – zapl

Antwort

1

Es gibt hier kein Gang-of-Four Design Pattern. Es gibt zwei Arten von Polymorphie.

  1. Subtype Polymorphism - aufgrund der Vererbungsbeziehung zwischen User und seinen untergeordneten Klassen.
  2. Parametric Polymorphism - aufgrund der generischen Beziehung zwischen AbstractRepository und AbstractEntity.
Verwandte Themen