Ho un problema con il codice condiviso in un'applicazione MVC. Controller / viste delle applicazioni ABC sono classi diverse ma utilizzano un framework comune. È una singola classe riutilizzata più volte.
Consentitemi di introdurre la mostra A, che mostra un modello della finestra principale di A dell'applicazione.
Cisonoduepuntidiinteresseprincipali.Asinistrac'èunavistatabella,chemostraunnumerodianatredigommadisponibili.Ognianatradigommahaunnumerodiattributi,chenonsonomodificabilieprincipalmenteusatiperordinarelatabella.Adestrac'èunaschermataincuièpossibile,inquestocaso,modificarel'aspettodell'anatradigommaselezionata.Latabellavieneutilizzataperselezionarequalevocedeveesseremostrataqui.
LavistatabellarealeèmoltopiùcomplicatadiunasempliceQTableView,haunapropriaclassedicontroller,unaclassedivisualizzazioneealmomentounapropriaclassedimodello.
Anchel'applicazionehauncontroller,unavistaeunmodello.Ilmodellodivisualizzazionetabellavieneinizializzatodalmodellodell'applicazioneprincipalealmomentodell'applicazione.Larimozione/Inserimentodiarticolinonèuncasod'uso.
ConsentitemidiintrodurrelamostraB,cheèunanuovaapplicazionechecondividelavistatabella.
L'applicazioneBcontienelastessalistview,maquilavistacorrettaèusatapercomporreun'immaginediunagaradianatradigomma.Ciòsignificacheèpossibileaggiungerneunoopiùanatredigommadaltavolo.Inoltre,dopol'applicazioneA,cisonostatiuncertonumerodicalcolichehannoportatoapiùcolonnenellatabella(comeunvaloredicarineriachepuòessereusatoperordinarelatabella).
Daquandol'applicazioneBèentratanellascena,ilmodellodeveessereregolatopercontenerepiùvalori.Ciòsignificachepossiamo:
condividiilcodiceconl'applicazioneA,ilcuimodellosaràquindiingombratodavociinutili(noninizializzate)chevengonoutilizzatesoloinaltreapplicazioni.
clonailcodicecondiversimodelli,checilasciaclassiseparateeridondanzadelcodice.
modificalavistatabellaperutilizzareilmodellodell'applicazionealcostodidovercontrollarenellavistadellatabellaqualiruoliesistononelmodellocorrenteedevonoesserevisualizzati.
Inoltre,cisonopianiperl'applicazioneCchecostruiscecoppiedipaperelledigomma,famatchmaking(assegnaunpunteggiodisomiglianzadientrambeleanatre)chedovrebbeesseremostratonellatabellainvecedianatredigomma"singolari". Il modello di questa applicazione varierà notevolmente da quelli precedenti. Ciò rende l'opzione 1 (e probabilmente 3) piuttosto difficile da implementare.
Quindi preferisco l'opzione 3 mentre il mio collega non è d'accordo, preferendo i modelli separati.
Come posso realizzare ciò che voglio fare?
Disclaimer di attribuzione dell'immagine:
Immagine di anatra cyber: commons.wikimedia.org/wiki/File:Cyberduck_icon.png
Immagine gara di anatra: commons.wikimedia.org/wiki/File:Leichlingen _-_ Entenrennen_2010 _-_ Rennen_13_ies.jpg