Sono state create nuove interfacce di marker Java vuote per soddisfare un contratto di metodo esistente con un odore di codice?

1

Supponiamo di avere un POJO A e qualche codice client che lo serve. Ho creato POJO B, che non ha nulla in comune con A, ma voglio usarlo nei metodi che usano A, quindi ho deciso di creare un'interfaccia marcatore C, che implementa e modifica la firma dei metodi per servirli entrambi.

Considerando che oltre a essere in grado di essere serviti da questi metodi, questi due POJO non hanno un campo o un metodo in comune, dovrebbero davvero essere considerati come parte di qualche interfaccia, che capisco definisce un contratto o un comportamento? Poiché questo "contratto C" non specifica alcun comportamento è un contratto? Come lo definisce il principio di sostituzione di Liskov? Potresti dire che entrambi i POJO possono essere sostituiti da C in questi metodi, il che significa che non si rompono nulla, quindi sembra che la regola non sia affatto infranta.

    
posta TomaszRykala 26.04.2016 - 18:33
fonte

1 risposta

6

Direi che le interfacce Marker sono un odore di codice in sé stesse. Non sono convinto che siano mai state una buona idea, ma le annotazioni sicuramente li rendono obsoleti.

    
risposta data 26.04.2016 - 20:46
fonte

Leggi altre domande sui tag