L'interfaccia di servizio non dovrebbe estendere il DAO?

1

Sto scrivendo il livello di servizio per il mio DAO e ho esteso l'interfaccia DAO. Sembra un po 'come questo:

public interface FooDAO {
    Foo get(long id);
    boolean update(Foo foo);

Questi due metodi lo faranno per ora. Ora, scrivendo il livello di servizio su quello:

public interface FooService extends FooDAO, AutoCloseable {
    // no extra methods currently
}

Penso che DAO fornisca il CRUD di base, quindi potrei anche estenderlo per il mio servizio.

Poiché l'interfaccia FooDAO e FooService sono pubbliche, esiste un motivo per non esporre il DAO al servizio?

    
posta rath 08.03.2018 - 12:49
fonte

1 risposta

2

Mi sembra davvero strano.

Un DAO serve per spostare i singoli record. Un servizio dovrebbe fare cose appropriate al dominio, come "verificare che questo cliente non abbia prestiti in sospeso" o "accendere tutte le fasi del razzo nell'ordine corretto". In praticamente qualsiasi sistema realistico, questi due tipi di azioni sono così diversi nella concezione che ha poco senso immaginare il tuo servizio come essere semplicemente un DAO, che è ciò che trasmetterebbe l'ereditarietà.

    
risposta data 08.03.2018 - 12:59
fonte

Leggi altre domande sui tag