Ich such eine möglichen, praktikablen Lösungsansatz für folgendes Problem:
Ich habe eine GenericDAO die für n unterschiedlichen Klassen verfügbar ist. Eine DTO kann neben Primary Key und spezifischen Daten über mehrer weitere Attribut wie
[ul]
[li]publish (Kennzeichnung zum veröffentlichen) und / oder
[/li][li]deleted (Kennzeichnung als gelöscht) und / oder
[/li][li]order (Zahl für die Sortierreihenfolge) und / oder
[/li][li]default (Kennzeichnung als default)
[/li][/ul]
verfügen.
Beispiel:
DTO_A
id
publish (Kennzeichnung zum veröffentlichen)
deleted (Kennzeichnung als gelöscht)
DTO_B
id
order (Zahl für die Sortierreihenfolge)
default (Kennzeichnung als default)
DTO_C
id
publish (Kennzeichnung zum veröffentlichen)
order (Zahl für die Sortierreihenfolge)
verfügen. Nun könnte ich zwar in der GenericDAO Klasse alle Funktionen für die Behandlung von allen Attributen definieren, z.B.
setDeleted(boolean deleted)
Aber ich möchte nur die Funktionen öffentlich zugänglich machen, über dessen Eigenschaften die DTOs verfügen. D.h.
für die einzelnen DTOs müsste die DAO Klasse neben den standmässigen CRUD - Funktionen wie folgt aussehen
DTO_A_DAO extends GenericDAO<DTO_A>
— boolean isPublish(int id)
— void setPubish(DTO dto, boolean publish)
— boolean isDeleted(int id)
— void setDeleted(DTO dto, boolean publish)
DTO_B_DAO extends GenericDAO<DTO_B>
— int getOrder(int id)
— void setOrder(DTO dto, int Order)
— boolean isDefault(int id)
— void setDefault(DTO dto, boolean default)
DTO_C_DAO extends GenericDAO<DTO_C>
— boolean isPublish(int id)
— void setPubish(DTO dto, boolean publish)
— int getOrder(int id)
— void setOrder(DTO dto, int Order)
Also im Prinzip ein Dekorationspattern allerdings bezogen auf Klassenebene / Funktionen und nicht auf Attributebene / Werte. Wie würdet ihr so ein Problem lösen?