8

Questa è probabilmente una domanda per principianti poiché sono nuovo per i modelli di progettazione ma stavo guardando al metodo di template e ai DP di strategia e sembrano molto simili. Sono in grado di leggere le definizioni, esaminare gli UML e verificare esempi di codice, ma a me sembra che il modello di strategia stia semplicemente usando il modello di metodo di modello, ma vi capita semplicemente di passarlo dentro e oggetto (cioè composizione).Modello Modelli e modelli di progettazione della strategia

E per quanto riguarda il metodo Template sembra che sia solo un'ereditarietà OO di base.

Mi mancano alcuni aspetti chiave delle loro differenze? Mi manca qualcosa del Metodo Template che rende più che solo l'ereditarietà di base?

Nota: C'è un post precedente su questo (672083) ma è più su quando usarlo, che mi aiuta a ottenere un po 'di più, ma voglio validi i miei pensieri sui modelli stessi.

risposta

9

Fondamentalmente tutto si riduce alla semantica. Il modello di strategia consente di passare un particolare algoritmo/procedura (la strategia) a un altro oggetto e che lo userà. Il metodo template ti permette di sovrascrivere aspetti particolari di un algoritmo mantenendo comunque alcuni aspetti dello stesso (mantenere l'ordine lo stesso, e avere cose che sono sempre fatte all'inizio e alla fine per esempio ... il 'template') mentre l'ereditarietà è un modo di modellare le relazioni "IS-A" nei modelli di dati. Sicuramente, i metodi template sono più facilmente implementati usando l'ereditarietà (sebbene tu possa altrettanto facilmente usare la composizione, specialmente una volta che hai i funtori), e spesso i modelli di strategia sono anche metodi template ma dove la sintassi è simile i significati sono molto diversi .

+0

+1 per una buona spiegazione concisa e per menzionare la composizione sull'ereditarietà –

0

Il modello Strategy disegno
fornisce un modo per scambiare l'algoritmo di un oggetto dinamicamente in fase di esecuzione
(tramite composizione oggetto).

Ad esempio, calcolo dei prezzi in un sistema di elaborazione ordini.
Per calcolare i prezzi in diversi modi, è possibile supportare gli algoritmi di prezzo in modo che l'algoritmo da utilizzare possa essere selezionato (iniettato) e scambiato dinamicamente in fase di esecuzione.

Il disegno del modello Template Method
fornisce un modo per ridefinire alcune parti del comportamento di una classe staticamente al momento della compilazione
(via sottoclassi).

Ad esempio, progettazione di applicazioni riutilizzabili (framework).
L'applicazione implementa le parti comuni (invarianti) del comportamento in modo che gli utenti dell'applicazione possano scrivere sottoclassi per ridefinire le parti varianti in base alle proprie esigenze. Ma gli autori di sottoclassi non dovrebbero essere in grado di modificare le parti invarianti di il comportamento né la struttura del comportamento (la struttura di parti invarianti e varianti).

Problemi correlati