Qual è l'astrazione / struttura corretta per salvare questo oggetto nello spazio di archiviazione?

0

Ho un oggetto chiamato SecurityServer .

Viene creato utilizzando SecurityServerFactory .

Ho bisogno di serializzare SecurityServer sul token disco / hardware / o qualche altra memoria.

Che è più corretto:

  • securityServerInstance.Save()
  • StorageAbstract.SaveServer(securityServerInstance);
  • Entrambi?
  • Né? Utilizzare l'iniezione?

Ho la sensazione che ho bisogno di capire il design guidato dal dominio, ma a questo punto sono autodidatta e sto iniziando finalmente a "prendermelo"

    
posta random65537 24.02.2017 - 21:22
fonte

3 risposte

2

Se utilizzi StorageAbstract.SaveServer(securityServerInstance); , StorageAbstract dovrà essere in grado di accedere a tutto all'interno di un oggetto SecurityServer che deve essere serializzato. Questo potrebbe essere un problema se c'è uno stato interno che deve essere salvato ma non lo è - e probabilmente non dovrebbe essere accessibile al di fuori di SecurityServer . Se non vuoi preoccuparti di questo, allora forse l'oggetto si salva da solo.

    
risposta data 24.02.2017 - 21:26
fonte
1

Nel contesto di DDD (Domain Driven Design), l'unica risposta consistente è usare un "repository": rep.save(securityServerInstance) , dove rep è un'istanza di SecurityServerRepository .

    
risposta data 24.02.2017 - 21:35
fonte
0

Hai dovuto affrontare due scelte: 1. Esporre i membri privati in modo che una classe esterna possa accedere a tali membri 2. Rendi l'oggetto salvato da solo

Suggerisco una terza opzione: utilizzare il modello di progettazione del visitatore e creare un visitatore il cui scopo è serializzare l'oggetto.

Questo aiuta il tuo server di sicurezza ad avere meno responsabilità.

Pensa ad un altro esempio, come ad esempio creare un rapporto testuale dalla classe. Questo report deve includere dati visibili solo al server di sicurezza. Ti piacerebbe anche implementare quel metodo all'interno del server di sicurezza?

L'utilizzo del modello di progettazione dei visitatori potrebbe aiutarti a ridurre il codice all'interno della classe e a separare le responsabilità

    
risposta data 25.02.2017 - 12:37
fonte