Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Pierock
    Registrato dal
    Dec 2008
    Messaggi
    102

    [java] mvc o mvp? come metterli in pratica?

    Salve a tutti,
    sto lavorando ad un'applicazione desktop in cui vi è un JPanel che si costruisce automaticamente in base ad alcune informazioni presenti in un database sottostante.
    Nel progetto dunque ho una classe "Map" che a seconda del codice che gli viene dato effettua ogni tipo di operazione sul db, insert, select, delete .. etc.

    Attualmente, la classe "myPanel", dovendo reperire info dal db, quali: "cosa c'è in quella tabella?" , "l'id più grande di quell'altra? " .. e via dicendo ...
    usa e riusa al suo interno più volte la classe "Map" per reperire le varie informazioni.

    Valia, tempo fa, mi ha suggerito di evitare questa strategia, forse un po' rozza, e di seguire un pattern MVC...
    mi sono documentato su questo pattern e sul MVP .. ne ho capito lo scopo, ma ad essere sincero o le idee parecchio confuse sulla loro implementazione..
    ovvero...
    come seguo questo pattern partendo dalla situazione delle mie 2 classi? .. e quale sarebbe più congeniale?

    considerando le 2 classi che ho...
    dovrei creare una terza, "Presenter", la quale contenga dei metodi che rappresentano gli utilizzi di "Map" nella mia classe "myPanel" ?

    tipo:
    codice:
    public class myPanel extends JPanel{
     private Presenter pres;
    
        nella tabella tot ci sono " pres.numeroTuple() " elementi
        il più grande id è "pres.maxId()"
    }

    codice:
    public class Presenter{
     private Map mp;
    
       public int  numeroTuple(){
                result = mp.operazione(codice);
                return result;
    
    public int  maxId(){
                result = mp.operazione(codice);
                return result;
    }
    
    }
    qualcosa di questo tipo?
    come si può notare ho un pochino le idee confuse...

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    pensavo a te oggi e a come spiegarti in breve queste cose.

    visualizzi i dati su una JTable?
    RTFM Read That F*** Manual!!!

  3. #3
    Utente di HTML.it L'avatar di Pierock
    Registrato dal
    Dec 2008
    Messaggi
    102
    pensavo a te oggi e a come spiegarti in breve queste cose
    ti ringrazio di cuore anche solo per il pensiero ..

    In effetti so che non sono cose che si possono spiegare facilmente in poche righe.. qui la fanno da padrona la pratica e l'esperienza...

    allora ti spiego in 4 righe la mia situazione...
    il "myPanel" legge il contenuto di una tabella, in cui ogni tupla ( si, tuple di una tabella, non colonne ) è composta da ID, nome e tipo..
    quindi, se ad esempio trova ( 3 , 'professione', 'Testo' ) fa apparire sul pannello un JTextField con di fianco una JLabel("professione")...
    successivamente ... dopo la compilazione del form così generato, al click di un apposito bottone... scrive tutte le informazioni digitate in una seconda tabella.

    per effettuare le letture e scrittura al db .. utilizza la classe "map" (utilizzata da tutto il resto del progetto) che si occupa della connessione al db..

    vorrei avere le idee più chiare su come possa migliorare il mio codice....

  4. #4
    Utente di HTML.it L'avatar di progAnd
    Registrato dal
    Jan 2012
    Messaggi
    119
    Il pattern è abbastanza complesso da spiegare senza sapere come è fatto il tutto, ma comunque, in soldoni, funziona così:
    CONTROLLER chiede a MAP di restituirgli una tupla; CONTROLLER passa tupla a VISUAL che provvede a visualizzarli:
    codice:
    Tupla t=Map.dammiIDati();
    visual.visualizza(tupla)
    codice:
    visualizza(Tupla t) {
      label1.setText(t.get1());
      label2.setText(t.get2());
    }
    Il vantaggio è che potresti cambiare completamente la visualizzazione, senza dover toccare MAP o CONTROLLER; MAP potrebbe usare database, connessioni di rete, file XML od altro senza che bisogni toccare CONTROLLER o VISUAL. CONTROLLER può aggiungere uno strato di controllo o trasformazione (anche delegando) senza bisogno di cambiare MAP o VISUAL.

    La "versione" ad eventi (quella che poi usa SWING) è più complessa e sono troppo stanco per spiegarla adesso

    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.