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

    [JAVA] Cosa significa "fattorizzare"?

    Salve a tutti,

    leggendo un tutorial sui Pattern ho trovato la seguente frase:

    "Si usa una classe astratta quando in un design si vogliono fattorizzare alcuni comportamenti a livello di super classe, mentre altri comportamenti devono essere ridefiniti"

    Il senso penso di averlo capito: alcuni metodi della super classe devono essere lasciati così come sono nella sottoclasse, mentre altri vanno modificati.

    Però continuo a non capire il significato della parola fattorizzare, che - vocabolario alla mano - significa "scomporre in fattori".

    Qualche suggerimento?

    Grazie dell'attenzione,
    Matteo.
    Gutta cavat lapidem
    [La goccia scava la pietra]
    ***
    (Ovidio)

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Secondo la mia interpretazione, quel "fattorizzare" può stare per "assegnare", "delegare" o anche "accomunare", "raggruppare".

    In una classe astratta ci possono essere metodi "concreti" che possono o non possono (se marcati final) essere ridefiniti. E ci possono essere metodi abstract che invece devono essere ridefiniti, perché si presuppone che il "design" della classe sia tale per cui il "vero" lavoro da svolgere deve essere implementato in modo specifico in una sottoclasse.


    Prendiamo un esempio abbastanza calzante. La classe java.io.InputStream è astratta. Ha diversi metodi, di cui però solo 1 è astratto:

    public abstract int read()

    Gli altri sono tutti "concreti" e quindi implementati (anche solo vuoti o con un comportamento particolare di "default").

    Se vuoi estendere InputStream tecnicamente sei obbligato a ridefinire solamente questo metodo read() che legge 1 byte per volta. Gli altri 2 metodi che leggono un blocco di byte sono già implementati in InputStream in termini di utilizzo del read() che legge 1 byte per volta.

    Se vuoi (quindi è opzionale) per questioni di performance puoi ridefinire anche gli altri read() che leggono un blocco di byte.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.