Scriverò un semplice gestore di password, che memorizzerà i miei account crittografati. Ecco la descrizione delle classi,
LoginManager: questa classe sarà responsabile dell'autenticazione dell'utente, poiché i dati sull'harddrive saranno crittografati, riuscirà solo se i dati verranno decodificati correttamente, la prima riga del file di dati sarà [DECRYPTED], in modo che il programma è in grado di capire che i dati vengono decodificati con successo e consentono all'utente di accedere all'interfaccia utente.
Dependecies:
- DataChecker
- CryptographyManager
- StorageManager
- UserInterface
UserInterface - Questa classe sarà responsabile della modifica, ricerca, visualizzazione e aggiunta di dati (account). Dependecies:
- DataManager
DataManager - La responsabilità di questa classe è di gestire i dati, conterrà una tabella ad albero o hash dei dati. Deve essere in grado di cercare, modificare e aggiungere nuovi dati alla struttura dati. Dependecies:
- Dati
Dati - Questa classe contiene i dati suddivisi in campi: ID, accout, commenti, password. Dovrebbe fornire un incapsulamento adeguato.
DataChecker - La responsabilità di questa classe è di verificare che la prima riga del file specificato sia [DECRYPTED], detta in altro modo per verificare se i dati sono decodificati con successo e crittografati (prima di chiudere il programma il file deve essere crittato ).
StorageManager - Questa classe è responsabile della lettura e scrittura dei dati dal disco.
CryptographyManager: questa classe è responsabile della memorizzazione dell'algoritmo di crittografia Dependecies:
- CryptographyAlgorithm
CryptograpghyAlgorithm - Questa è l'interfaccia per diversi algoritmi di crittografia, ogni classe dovrebbe implementare metodi per crittografare e decodificare.
Penso di aver reso questo disegno complicato. Il programma non è così complicato da utilizzare qualsiasi schema di progettazione, quindi ho cercato di seguire i principi solidi. Quello che mi infastidisce di più è che CryptographyManager sembra inutile. Vorrei sapere se sto violando i principi SOLID.