Sto seguendo la formazione al mio nuovo lavoro per utilizzare un buon design orientato agli oggetti con uno stile di programmazione a 3 livelli. Il mio supervisore dice che ho un problema di progettazione con il mio codice:
class Program
{
public static void Main()
{
UserInputValidator Validater = new UserInputValidator();
int logSelected = -2;
Console.Write("\nFilepath: ");
string filePath = Console.ReadLine();
while (logSelected != -1)
{
Console.WriteLine("\n" + "SELECT AN OPTION MENU");
Console.WriteLine("-----------------------");
Console.Write("\n" +
/* Display option menu here with several options */
"9 ) Exit\n\n");
Console.WriteLine("-----------------------");
logSelected = Convert.ToInt32(Console.ReadLine());
Validater.ValidateOptionsMenu(logSelected, filePath);
}
}
public void DisplayMessage(string message)
{
Console.WriteLine(message);
}
}
Validator.ValidateOptionsMenu () gestisce la logica per l'avvio di un processo a seconda dell'opzione selezionata.
Questa è un'applicazione a 3 livelli con livello di presentazione, business e accesso ai dati. Il programma si trova nel livello Presentazione e gli altri livelli utilizzano un codice simile al seguente per visualizzare un messaggio:
Program program = new Program();
program.DisplayMessage(message);
Ho bisogno di capire perché questa è una pratica sbagliata - il mio supervisore dice che il programma di classe avvia solo l'applicazione, come la classe App in WPF. Deve avere solo una responsabilità. L'interazione con l'utente (il mio menu delle opzioni) è delegata a un'altra classe. Sto avendo difficoltà a capire il mio supervisore e non sono sicuro di come risolverlo. Qualcuno può aiutarmi a capire?