Che modello di progettazione è questo? [duplicare]

-2

Sto facendo fatica a trovare il nome di un modello di design di cui ho bisogno di scrivere. Sono stato portato a pensare che fosse un'astrazione ma apparentemente no.

Diciamo che ho avuto una classe di driver che ha un metodo Drive :

public void Drive()
{
    if(IsOnGasPedal)
    {
        //Lots of code
    }
    if(IsOnBrake)
    {
        //Lots of code
    }
    if(IsOnClutch)
    {
        //Lots of code
    }
}

E cambio il metodo in:

public void Drive()
{
    if(IsOnGasPedal)
    {
        Car.Gas()
    }
    if(IsOnBrake)
    {
        Car.Brake()
    }
    if(IsOnClutch)
    {
        Car.Clutch()
    }
}

Ho spostato il codice complesso e lungo in metodi separati nella mia proprietà Car in modo che il metodo di Drive sia più organizzato. Questo è un esempio di refactoring ma non è la parola. Pensavo che fosse incapsulamento o astrazione, ma non riesco a ottenere risposte solide. Come si chiama questo modello?

    
posta Frayt 28.06.2015 - 20:51
fonte

3 risposte

5

Per essere chiari, nessuno dei "refactoring", "astrazione" o "incapsulamento" sono schemi di progettazione.

Né è ciò che hai postato. Come dici tu, è un refactoring. In particolare, è quello che Martin Fowler ha definito Metodo di estrazione . La definizione è "Trasforma il frammento in un metodo il cui nome spiega lo scopo del metodo.", Che è esattamente quello che stai facendo.

Inoltre rientra nella definizione di astrazione. Struttura e interpretazione dei programmi per computer, ad esempio, lo descrive come :

[The means] by which compound elements can be named and manipulated as units.

Gli elementi composti, in questo caso, farebbero riferimento alle espressioni multiple che costituiscono i metodi estratti.

    
risposta data 28.06.2015 - 22:03
fonte
1

Probabilmente è semplicemente l'applicazione della programmazione strutturata che è stata chiamata molto prima che nascessero i modelli di design.

Come refactoring, puoi chiamare ciò che hai fatto " metodo di estrazione "

    
risposta data 28.06.2015 - 22:02
fonte
1

Penso che alle persone manchi il fatto che si sta delegando il comportamento che una volta era nella classe Driver nella classe Car, quindi non è veramente un metodo Extract perché altrimenti sarebbe nella stessa classe. Questa è una semplice composizione (non una DP), ma se vuoi essere gentile, potrebbe essere un'implementazione della strategia, che alcune persone considerano un modello di progettazione.

    
risposta data 29.06.2015 - 00:52
fonte

Leggi altre domande sui tag