Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    progettazione struttura classi per gestione file upload

    ciao a tutti.

    Mi servirebbe il vostro parere circa la struttura della progettazione della classe che sto creando per la gestione dell' upload file.

    Ho creato la mia classe, dove nel costruttore ho messo le operazioni iniziali, come i controlli, controllo del nome ecc... con l'upload finale del file.

    Ora però mi serve un metodo per creare le thumbnail... nessun problema, l'ho creato.

    Però questo metodo per le thumb mi potrebbe servire anche per immagini che non sono da uplodare, ma che sono gia uplodate.
    Quindi al posto di farlo um metodo della classe l'ho messo come funzione separata, ma non so perchè mi sembra che ci sia qualcosa di meglio a livello progettuale da potere fare...

    cose ne pensate?
    grazie!

  2. #2
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Lavoro da molto poco con le classi e sto studiando la logica delle varie costruzioni..
    Mi introduco nella discussione in particolare perchè voglio avere le notifiche degli utenti più esperti che vanno a rispondere.

    Cmq un'idea sarebbe che il la classe di upload contenga un metodo pubblico che puoi richiamare solo quando lo ritieni necessario che restituisca l'oggetto a fronte del file uplodato.

    Ad esempio tu file l'upload, richiami il metodo GetOBJFromUplodedFile() e questo restituisce un oggetto image (che contiene il metodo per generare il thumbnail).

    Questo ti darà la possibilità di gestire ulteriori tipi di file in futuro, esempio se il file è un pdf ti restituisce un oggetto pdf.

    Dato che il metodo per creare i thumbnail è appartenente alla classe "image" avrai la possibilità di generare l'oggetto anche non a fronte di un uploded file...

    Il problema che si presente a mio avviso è che il metodo che restituisce l'oggetto a fronte del file, nella tua classe image, diventa dipendente da tutti gli altri oggetti, image, pdf ecc ecc è percui si crea un problema di dipendenze.
    Che mestiere difficile.....essere da soli ancora di più

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    • il costruttore dovrebbe limitarsi a gestire le dipendenze
    • nessun metodo (costruttore compreso) deve svolgere troppe operazioni
    • nessuna classe deve svolgere troppe operazioni


    Se descrivendo una classe o un metodo ti metti a dire 'questa classe/metodo fa questo e questo e questo...' reiterando troppe volte 'e questo', oppure hai difficoltà a dare un nome significativo a una classe (o a un metodo), non hai rispettato uno dei precedenti punti.

    Il costruttore non dovrebbe fare controlli e nemmeno l'upload, la stessa classe non dovrebbe gestire le miniature.

    L'unica cosa che hanno in comune un classe che fa upload e una che crea le miniature è il fatto che la seconda potrebbe dover lavorare sugli url dei file creati dalla prima.

    Dunque l'ideale è creare una classe a se che gestisca le operazioni sulle immagini, per ora fai solo le miniature, un domani aggiungerai watermark e altre funzionalità.

    Io fossi in te creerei una classe abstract Uploader che effettua l'upload facendo prima tutti i dovuti controlli. Essendo la classe di tipo abstract non puoi richiamarla direttamente, dunque devi creare un classe che la specializza (usando extends) chiamandola ad esempio ImageUploader che si limita a stabilire la configurazione per l'upload di file di tipo immagine. Per configurazioni intendo dimensione file massima, cartella di destinazione, tipi ed estensioni accettate. In tal modo se un domani dovessi fare l'upload di file pdf o di qualunque altro tipo crei l'opportuna classe specifica che definisce opportunamente la configurazione e continui ad utilizzare la classe uploader.

    Per diversi motivi finito l'upload potresti voler ritornare un array con gli url dei file appena caricati.

    A questo punto con questi url puoi farci quello che vuoi.

  4. #4
    Ciao ragazzi,
    Grazie per l'aiuto. L'idea di care un classe a monte per il solo upload mi piace e mi sembra la piu corretta. Ma la facciamo abstract con l'intento di evitare il richiamo diretto o ci sono anche altre ragioni?

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    Il codice stesso ti costringe ad essere chiaro.
    Infatti tu creerai un'istanza di ImageUploader e non di Uploader, il codice sarà più esplicativo anche quando lo rileggerai a distanza di tempo.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.