Chiarimento sul modello di strategia

3

Ho appena letto alcuni schemi di progettazione di base,

Qualcuno potrebbe dirmi se il termine "modello di strategia" si applica solo se stai implementando un'interfaccia completamente astratta?

E quando i tuoi figli (i calcestruzzi?) ereditano da una classe genitore (la strategia?) con alcuni metodi implementati e alcune funzioni virtuali e / o astratte? In caso contrario, il resto dell'implementazione, l'idea che è possibile passare da un bambino all'altro in fase di esecuzione, è identico. Questo è qualcosa a cui sono abbastanza familiare, mi stavo chiedendo se lo chiameresti ancora il Pattern strategico o se quel termine si applica solo all'utilizzo di un'interfaccia.

Chiedo scusa se questa domanda non è appropriata! O se questo è solo un pelo nell'uovo :) Sto ancora imparando e non sono sicuro che i modelli di design siano definiti abbastanza bene all'interno del settore o solo un concetto da implementare come preferisci.

    
posta Holly 10.11.2012 - 16:06
fonte

2 risposte

1

Could someone tell me if the term "strategy pattern" only applies if your implementing a completely abstract interface?

Il modello strategico riguarda la scelta dell'algoritmo in fase di esecuzione; tecnicamente l'algoritmo viene eseguito chiamando una funzione, quindi solo quella funzione deve essere astratta / non implementata. Se tutti gli algoritmi simili chiamano altre funzioni, indipendentemente dall'algoritmo, tali funzioni possono essere inserite nella superclasse.

Ad esempio, si implementa un modello di strategia per salvare qualcosa in un file; a seconda di qualcos'altro, potresti salvarlo in formato XML o binario. È possibile implementare la logica di salvataggio dei dati in un file nella superclasse (poiché è comune a tutte le implementazioni) e la logica di conversione dei dati in XML in una sottoclasse e in binario in un'altra sottoclasse.

L'idea dietro i modelli non è un'implementazione rigorosa ma un'idea di design; puoi implementarlo come lo ritieni adatto al tuo particolare problema.

    
risposta data 10.11.2012 - 22:25
fonte
4

Una strategia è semplicemente il punto in cui un oggetto assume qualcosa che definisce come dovrebbe gestire un determinato comportamento. Potrebbe essere un'implementazione di una classe base astratta, potrebbe essere uno script, potrebbe essere un funtore, potrebbe essere un numero qualsiasi di cose.

Il pattern stesso è un design che usa questo concetto.

    
risposta data 10.11.2012 - 16:49
fonte

Leggi altre domande sui tag