Migliorare la progettazione di un ristorante semplice Architettura client-server (schema UML)

2

Devo progettare un semplice modello client-server per il sistema di fatturazione di alcuni ristoranti fittizi.

Dopo aver trascorso circa 10-15 ore sul diagramma UML, non sono arrivato a tanto. Il problema principale che sto affrontando è la progettazione OO lato client.

Le due idee attuali sono:

Design A

In questo progetto, essenzialmente sto facendo il pieno di tutte le cose relative alla gestione di menu, tabelle e qualsiasi altro oggetto relativo al ristorante in una singola classe (Client). Detto questo, pone un problema di scalabilità e viola anche il principio di responsabilità singola del design OO.

Tuttavia, semplifica enormemente la comunicazione tra la classe Client e le cose che deve gestire (ad es. i menu) poiché fanno parte della classe Client.

DesignB

Inquestaprogettazione,leattivitàsonomoltopiùdistribuiteperillatoclient.Adesempio,laclasseClientavràachefareconoggettiristorante(cioèmenuetabelle)attraversooggettiistanziatianzichédirettamente.

Inoltre,perleclassiMenu/TableperaccedereallaclasseDatabase,devonopassareattraversolaclasseClient,ilchesignificachedevonoessercialcunecomunicazionitrailClienteeleclassiMenu/Tabella.AquestoscopoesistelaclassediRichiestaastratta.InpraticamemorizzalecoseinunacodachelaclasseClientpuòsuccessivamenteritirare.

Maoraildesignsisentegiàparticolarmentecontortonelpercorsocherichiederàunarichiesta;unarichiestaverràinnalzatanellaclasseClientcheverràpoipassatainunoggettoMenu/Tabellaistanziato,dopodichéverràprelevatadallaclasseClientdaunloop(Client->Menu/Table->Client).

Quindi alla fine della giornata, quale design dovrei scegliere e come posso migliorarlo?

    
posta OthmanEmpire 18.02.2016 - 11:45
fonte

2 risposte

0

Progettazione C

Alla fine della giornata, Design C è quello che ho finito usando:

  • Rimuove il superfluo bisogno della classe Requests tra il Client e gli oggetti che usa rispetto a Design B.
  • È di gran lunga più OO rispetto a Design A.

    
risposta data 02.03.2016 - 09:06
fonte
0

Penso che manchi una lezione di ristorante e un corso di prenotazione.

  • Un ristorante ha una raccolta di tabelle di dimensioni fisse
  • Una prenotazione collega un cliente a un tavolo per un periodo di tempo (che è solo una data nell'esempio).

Pensa in termini reali: contatti un ristorante per fare una prenotazione per una data specifica. Puoi chiamare per cancellare quella prenotazione. La modellazione del mondo reale semplificherà immensamente la tua codifica.

Con il tuo design C, hai un metodo client.findEmptyTable (). Questo è strano - sicuramente dovrebbe essere qualcosa sulla falsariga di restaurant.findEmptyTable (date).

Inoltre, questa domanda è probabilmente più adatta al forum di Code Review.

    
risposta data 02.03.2016 - 09:37
fonte

Leggi altre domande sui tag