(Ri) strutturazione di un progetto Qt [chiuso]

-1

Un progetto PySide su cui sto lavorando da un po 'di tempo ha iniziato a crescere fino a diventare abbastanza grande da dover fare un passo indietro e ripensare al design generale.

Ho passato un po 'di tempo con Flask e Django, quindi ho familiarità con il pattern di progettazione MVC concettualmente, ma ho avuto il vantaggio (o forse lo svantaggio!) di così tanti grandi esempi di come strutturare e layout Flask / Progetti di Django che non ho dovuto pensarci molto. Ora che sto provando a inserire il mio progetto in questo tipo di schema di progettazione per la prima volta, trovo difficile immaginare come dovrebbe essere tutto sistemato. Passando un po 'di tempo a leggere sul pattern MVC sono stato un po' lieto di vedere che in parte avevo intrapreso questa strada senza cercare consciamente, ma avevo reso le cose inutilmente complicate e accoppiate.

Non c'è nulla di particolarmente speciale nel mio programma: un utente interagisce con un'interfaccia utente che recupera i dati da un database per la visualizzazione o l'elaborazione.

Cercando di associarlo a una struttura MVC, ho trovato:

Controller: la maggior parte delle effettive funzionalità dell'applicazione - l'utente interagisce con un widget sull'interfaccia utente, il controller accetta questo input e esegue le operazioni appropriate - recupera i dati dal modello e li invia alla vista per visualizzarli nell'interfaccia utente, eseguire operazioni su di esso e rimandare al modello per l'aggiornamento nel database, ecc. In Qt speak, i segnali widget collegati ai metodi del controller che coinvolgono i dati di estrazione dal modello (di solito) per l'elaborazione o la vista tramite la vista.

Modello: Inserisci / aggiorna / seleziona i dati dal database come indicato dal Controller.

Visualizza: Il lavoro effettivo dell'interfaccia utente viene svolto qui - aggiornando i fogli di stile dei widget (funzione principale del programma) e anche i dati di formattazione trasmessi alla Vista dal Controller (dal Modello) come specificato dal Controller (presi da varie opzioni utente ha selezionato sull'interfaccia utente) per poi visualizzare all'utente tramite i widget dello schermo. È qui che la maggior parte delle mie singole classi di oggetti entrerebbe in gioco.

La differenza principale tra ciò che ho elencato sopra e il modo in cui ho strutturato il mio programma al momento è che i componenti Model / View erano più o meno sovrapposti, con il modello che recuperava i dati ma eseguiva anche la maggior parte della formattazione dei dati pure.

Quindi, sono sulla strada giusta qui?

    
posta Groundhog 21.01.2016 - 06:32
fonte

1 risposta

-1

Sì, sei sulla strada giusta. Soprattutto se rimuovi tutta la logica di presentazione / formattazione dal modello nella vista.

    
risposta data 21.01.2016 - 08:10
fonte

Leggi altre domande sui tag