Quale modello di software è uno in cui assemblare semplicemente cose, come creare un array di un certo tipo di dati?

-1

TL; DR: che cosa chiamo una sezione di codice che viene utilizzata per assemblare un oggetto Graph ?

Ho una sezione di codice abbastanza grande che è duplicata in alcune aree. Vorrei estrarlo nella sua classe. Quello che chiamo questa classe è la mia domanda.

La sezione contiene codice come questo:

    /*
     * First Graph
     */
    $flow_curve = new CurveEntity();
    $curves = array();
    $curves[] = $flow_curve;
    $curves[] = new CurveEntity();
    $curves[] = new CurveEntity();

    $graphs = array();
    $graphs[] = new GraphEntity('graph_1');

    /*
     * Second Graph
     */
    $flow_curve = new CurveEntity($x);
    $curves = array();
    $curves[] = $flow_curve;
    $curves[] = new CurveEntity($y);
    $curves[] = new CurveEntity($z);

    $graphs = array();
    $graphs[] = new GraphEntity('graph_2');

Questo non è un controller e non la vista. Fa parte del modello? È un servizio? È un repository? Nulla sembra adattarsi.

Pensando a ciò che questo codice rappresenta, assomiglia all'assemblaggio dell'oggetto $ graph, in cui l'oggetto viene successivamente utilizzato nella vista per il tracciamento del grafico.

    
posta Dennis 30.10.2018 - 21:09
fonte

1 risposta

4

Se le variabili $flow_curve , $curves e $graphs appartengono a un "qualcosa" più grande, assegna a "qualcosa" un nome e crea una classe (forse è la classe Graph che hai menzionato ? O forse un po 'di GraphCollection ?). Trova un'astrazione più adatta alle tue esigenze. Quindi il codice potrebbe essere collocato naturalmente nel costruttore di quella classe - e questo è il nome del "pattern" che stai cercando, se insisti a chiamarlo pattern (personalmente, non lo farei ).

Se, tuttavia, la procedura di assemblaggio è abbastanza complessa, e quelle variabili sono solo aiutanti temporanei, il codice dal costruttore in una classe separata è il classico Builder modello di progettazione e la classe in cui il codice" vive "può essere chiamata GraphBuilder o GraphCollectionBuilder o simile.

    
risposta data 31.10.2018 - 08:27
fonte

Leggi altre domande sui tag