Voglio progettare un lettore di libri online. Il primo passo è la descrizione di tutti i casi d'uso che ho elencato di seguito:
- Dovrei essere in grado di cercare un libro per titolo.
- Dovrei essere in grado di prendere in prestito un libro.
- Dovrei essere in grado di aggiungere un libro preso in prestito ai segnalibri.
- Il sistema dovrebbe consentire a un utente per libro alla volta.
- Il sistema dovrebbe consentire di aggiungere un nuovo libro.
- Il sistema dovrebbe consentire di eliminare un libro esistente.
Detto questo, ora so che ho bisogno di alcuni oggetti di servizio che opererebbero su entità / oggetti valore per ottenere il risultato. Sto rimandando la progettazione / decisione del database per ora in quanto non considerata una buona pratica. Per ragioni simili, anche i meccanismi di consegna sono differiti.
Dopo alcune letture sono giunto alla conclusione che avrei avuto bisogno di quanto segue:
Servizi ( Algoritmi senza stati, dipende da entità / valori )
- SearchBook (prende un titolo e restituisce il risultato)
- BorrowService (controlla se un libro può essere preso in prestito)
- Servizio membri (registra / srotola i membri in una libreria)
Entità ( oggetti mutabili del mondo reale con ID univoco )
- Libreria
- Libro (numero ISBN come UID)
- Utente (Email come UID, può essere autore o lettore)
Associazioni
Un autore può avere molti libri sotto il suo nome, un utente può solo prendere in prestito un libro alla volta. Una biblioteca può contenere molti libri alla volta, può avere anche molti membri.
Note
- Per semplicità ci sarà solo una sola libreria / negozio.
- Nessun utente può leggere lo stesso libro alla volta
Domande
- Non riesco a trovare nessun oggetto valore fino ad ora o non riesco a riconoscerlo / trovarlo?
- Ho seguito Clean Architecture per qualche tempo e ho contribuito a creare un progetto giocattolo prima. Qual è la differenza tra questo e DDD?
- Sono sulla buona strada?