In ogni caso, sì, per questo tipo di applicazione dovresti scrivere una GUI.
Dalla descrizione del tuo problema, sembra che tu debba avere un solo menu chiamato "Prodotti" con due voci di menu, uno per sfogliare l'elenco di prodotti e l'altro per aggiungere un nuovo prodotto. Ora, non sai duplicare i menu per ogni "ruolo utente" nella tua applicazione. È necessario abilitare / disabilitare il menu, le voci di menu, i pulsanti e le finestre e tutti gli elementi grafici di "azione" in base al ruolo o ai ruoli dell'utente. Ad esempio, solo se è un amministratore, abiliti l'azione che consiste nel "aggiungere / modificare / rimuovere" i prodotti. Tuttavia, tutti gli utenti sono in grado di sfogliare l'elenco dei prodotti.
Ma, davvero, questa è la punta del tuo iceberg qui ...
Indipendentemente dai problemi della GUI, sospetto che abbiate un altro problema importante in quanto non si dispone di un database. Hai scritto sulla memorizzazione dei tuoi prodotti in una HashMap, ecco perché sono sospettoso. Ora puoi farla franca con una HashMap solo se la serializzi / deserializzi da qualche parte in un file, ma questa è solo una soluzione (molto) veloce e sporca per concentrarti sulla codifica della GUI.
Inoltre, un problema ancora più grande ... Dato che stai parlando di diversi ruoli utente, sospetto anche che persone diverse debbano usare l'applicazione nello stesso momento. In tal caso sarà necessario disporre di un database per connettersi e archiviare / recuperare le informazioni dell'utente. Non sarai in grado di raggiungere questo obiettivo con semplici hashmap.
Dai un'occhiata a come dovrebbe essere eseguita un'applicazione multilivello in teoria .
Anche le applicazioni molto semplici e rapidamente scritte prendono questo approccio.
Infine, controlla il seguente link dove hanno fornito un esempio di implementazione dell'architettura MVC, utilizzando Java SE: link . Tutto il codice sorgente è a tua disposizione per capire rapidamente come funziona.
ps: puoi fare tutto ciò in un'applicazione desktop, ma anche in un'applicazione web ... Forse hai prima un'altra decisione da prendere qui?