Cosa dovrebbe contenere questa interfaccia?

0

Sto creando uno schema per Doctrine ma prima sto creando interfacce, classi astratte (modelli) che saranno estese dalle entità.

Ho una PresentationInterface che contiene getter e setter per le informazioni di presentazione, ParticipantInterface che contiene lo stesso (firstname, lastname, email).

Entrambi hanno le classi astratte, Presentazione e Partecipante che implementano getter e setter e contengono anche informazioni di mappatura per quei campi. Possono contenere alcuni metodi di utlity che non sono definiti nell'interfaccia ma sono necessari all'interno del getter e setter per l'elaborazione dei dati.

Le entità sono Presentazione , Partecipante e Presentatore . Partecipante si estende dal modello Partecipante e Presentatore da Partecipante . Ora per differenziare sto usando il tipo di ereditarietà di tabelle singole di Doctrine con una colonna discriminatore chiamata is_presenter che è mappata all'entità Partecipante .

Fondamentalmente, un presentatore è in grado di creare una presentazione che successivamente viene aggiunta dai partecipanti.

La mia domanda è, se isPresenter è stato definito in ParticipantInterface ? È il modo in cui l'ho fatto peggio o bene? Se l'avessi lasciato nell'interfaccia, non potrei comunque usarlo come discriminatore, ma da un punto di vista logico dovrebbe essere nell'interfaccia o forse in un altro chiamato PresenterParticipantInterface ?

    
posta Glend Gjermeni 30.06.2015 - 18:46
fonte

1 risposta

2

Non ho idea di cosa sia Doctrine, ma da quello che stai descrivendo sembra ORM.

Indipendentemente da ciò, parlerò da SOLID e dalla prospettiva di progettazione del software.

Applicherei l'ISP (Principio di segregazione dell'interfaccia da SOLIDs) e avrò un'interfaccia numerica: IAttendee, IParticipant e IPresenter con i rispettivi metodi.

Quindi potresti avere variazioni di oggetti conformi al set di interfacce specifico:

public class Attendee extends Participant implements IAttendee { }
public class Presenter extends Attendee implements IPresenter {}
public class Auditor extends Attendee implmenets IAuditor {}

Usa le interfacce a tuo vantaggio, non limitarti a crearle senza motivo perché ti è stato detto di farlo. Mescoli e abbinali:)

    
risposta data 30.06.2015 - 19:00
fonte

Leggi altre domande sui tag