Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di Gunn
    Registrato dal
    Feb 2006
    Messaggi
    370

    aiuto x nuovo design pattern

    vi sottopongo un problema che ho, vorrei ricavarne una classe ereditabile utilizzabile come design pattern. Leggetevi questo codice:

    Se dobbiamo utilizzare ripetutamente la classe Pippo e i relativi metodi, siamo costretti a fare così, occupando un casino di linee di codice ripetitivo

    Codice PHP:
    <?php

    class Pippo
    {
         function 
    _1(){echo "1";}
         function 
    _2(){echo "2";}
         function 
    _3(){echo "3";}
    }

    class 
    Topolino{function add(){foreach(func_get_args() as $oget_class($o);}}

    $x=0;
    $pippo[$x] = new Pippo();
    $pippo[$x]->_1();
    $pippo[$x]->_2();
    $pippo[$x]->_3();
    $x++;
    $pippo[$x] = new Pippo();
    $pippo[$x]->_1();
    $pippo[$x]->_2();
    $pippo[$x]->_3();
    $x++;
    $pippo[$x] = new Pippo();
    $pippo[$x]->_1();
    $pippo[$x]->_2();
    $pippo[$x]->_3();

    $altro = new Topolino();
    $altro->add($pippo[0],$pippo[1],$pippo[2]);

    ?>
    la prima soluzione, senza particolari sbattimenti, è questa:

    Codice PHP:
    <?php

    class Pippo2
    {
         function 
    _1(){echo "1";return $this;}
         function 
    _2(){echo "2";return $this;}
         function 
    _3(){echo "3";return $this;}
    }

    class 
    Topolino2{function add(){foreach(func_get_args() as $ogettype($o) . "
    "
    ;}}

    for(
    $x=0;$x<3;$x++)
        
    $pippo2[$x] = new Pippo2();
    $altro = new Topolino2();
    $altro->add($pippo2[0]->_1()->_2()->_3(), $pippo2[1]->_1()->_2()->_3(),$pippo2[2]->_1()->_2()->_3());

    ?>
    quante righe di codice abbiamo risparmiato?
    con return $this; abbiamo la possibilità di lavorare sulla stessa riga, chiamando metodo su metodo.

    Cosa voglio ottenere? costruttore e metodi sulla stessa linea:

    $top = new Topolino()->add();

    Codice che chiaramente in php non va... adesso non so se questa sintassi funzioni in java c c#, ma ad occhio dovrebbe funzionare, in quanto il costruttore dovrebbe ritornare proprio l'oggetto (return $this)

    un bel design pattern potrebbe essere questo:

    $topolinoObject = Topolino::newInstance()->add(Pippo::newInstance()->_1()->_2()->_3(),
    Pippo::newInstance()->_1()->_2()->_3(),
    Pippo::newInstance()->_1()->_2()->_3());
    ma sarà realizzabile?

    a voi, phpespertoni
    -10 points to SCLERO high top class [definition of SCLERO HIGH TOP CLASS: 90 random kills]

  2. #2
    Utente di HTML.it L'avatar di Gunn
    Registrato dal
    Feb 2006
    Messaggi
    370
    dalla giuria (Eleonora ) mi dicono che su java questo va:

    class Pippo
    {
    public Pippo()
    {
    System.out.println("costruttore ");
    }

    public Pippo Funziona()
    {
    System.out.println("metodo ");
    return this;
    }

    public Pippo Ancora()
    {
    System.out.println("metodo2 ");
    return this;
    }

    public static void main(String []args)
    {
    Pippo obj = new Pippo().Funziona().Ancora();
    }
    }
    -10 points to SCLERO high top class [definition of SCLERO HIGH TOP CLASS: 90 random kills]

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.