Domanda

Il mio maestro è veramente buono e tendo a capire i suoi punti, ma questo va solo sopra la mia testa. Egli spiega Template Method in due varianti;
- Unificazione: la variante di serie, che si compone di una classe astratta con alcuni metodi astratti che definiscono le parti variante dell'algoritmo altrimenti fissa
. - Separazione:. La sua variante (? Credo) dove una classe contiene il templateMethod () e utilizza la delega a un'interfaccia di variare le parti dell'algoritmo, che sembra a me esattamente come il modello di strategia

Qualcuno può vedere quale sia il suo punto è, e come la variante 'separazione' è diverso dal modello di strategia?
Ho allegato un'immagine contenente i due modelli dal suo libro (che non è ancora pubblicata).

http://img64.imageshack.us/img64/3620/strategytemplate.jpg

È stato utile?

Soluzione

Non ho mai sentito parlare di una "variante di separazione" del pattern Template Method, e sono d'accordo che sembra estremamente simile alla strategia. Anche se c'è qualche ragionamento sulla proprietà interfaccia o come li invoca dal punto di vista del cliente quasi non trovo ci sia alcun beneficio a considerarli modelli differenti.

Altri suggerimenti

Nell'uso comune, Template Method utilizza sottoclassi per fornire i comportamenti varie. Con la strategia, è iniettare di un oggetto algoritmo. Nel tuo esempio, non v'è alcuna distinzione utile fra Template (separazione) e Strategia. Data l'età della Gamma et al libro, l'introduzione di questa nuova terminologia withou spiegare adeguatamente la differenza è probabile che a causare semplicemente confusione quando si parla con altri programmatori. Evitare di utilizzare al di fuori le vostre lezioni.

Modello consente di accedere ai membri protetti nella classe base. Strategia consente di sviluppare algoritmi più si losely accoppiati dagli oggetti che li utilizzano, e permette di iniettare lo stesso algoritmo in molti diversi tipi di oggetti.

Template Method:

  1. Si tratta di un design pattern comportamentale
  2. è utilizzato per creare uno stub e rimandando alcuni dei passi di attuazione alle sottoclassi. Si compone di alcune fasi il cui ordine è fisso.
  3. Definisce la procedura per eseguire un algoritmo e può fornire implementazione predefinita che può essere comune per tutte o alcune delle sottoclassi.
  4. Template Method superclasse chiama i metodi da sottoclassi,

modello di strategia:

  1. E 'un modello comportamentale
  2. Si basa su delega
  3. cambia viscere dell'oggetto modificando comportamento metodo
  4. E 'usato per passare da famiglia di algoritmi
  5. Cambia il comportamento dell'oggetto in fase di esecuzione. Un algoritmo verrà selezionato da una famiglia di algoritmi.

differenze di base.

  1. metodo Template utilizza Ereditarietà e Strategia utilizza composizione
  2. Il metodo Template implementato dalla classe di base non deve essere ignorata. In questo modo, la struttura dell'algoritmo è controllato dalla classe super- e dettagli sono implementati nelle classi Sub
  3. Strategia incapsula l'algoritmo dietro un'interfaccia, che ci forniscono la capacità di modificare l'algoritmo in fase di esecuzione. strategie multiple forniscono diversa implementazione per l'interfaccia.

Date un'occhiata al Journaldev Template metodo e Strategia articoli per una migliore comprensione insieme sourcemaking articoli.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top