Abbiamo bisogno di un modello servo? Che dire dell'attuazione nella classe genitore?

1

Da wikipedia:

Servant is used for providing some behavior to a group of classes. Instead of defining that behavior in each class - or when we cannot factor out this behavior in the common parent class - it is defined once in the Servant.

Dai un'occhiata a MoveServant e Movable esempio nella pagina wiki. Quale può essere la ragione per cui non voglio mettere moveBy e moveTo nella classe genitore per tutte le forme? In altre parole, perché la classe genitore che implementa la funzionalità è peggiore rispetto al servitore che implementa la funzionalità.

BTW in questa frase "Servant è usato per fornire un comportamento a un gruppo di classi." group of classes significa classi che appartengono allo stesso tipo (gerarchia di classi)?

    
posta Narek 10.10.2015 - 08:54
fonte

2 risposte

3

"Servant is used for providing some behavior to a group of classes." group of classes means classes that belong the the same type (class hierarchy)?

Il gruppo di classi può o non può essere nella stessa gerarchia di ereditarietà.

Si noti che nell'esempio WikiPedia Movable è un'interfaccia anziché una classe e non esiste una classe genitore per le forme. In una situazione più complessa, le classi possono implementare l'interfaccia su interesse, pur risiedendo in gerarchie di ereditarietà diverse. In tal caso, non esiste un genitore comune che manterrà i metodi comuni.

Naturalmente,èpossibilecreareunanuovaclassegenitoreeunirelegerarchie.Èmeglioevitarelegerarchiediclassiprofonde,però.

psSefosseC#,prendereiinconsiderazioneMoverServantpertrasportare metodi di estensione .

    
risposta data 10.10.2015 - 09:31
fonte
0

Inoltre non vedo alcun vantaggio dal semplice esempio fornito. Ma considera le prossime possibilità 1. Possibilità di cambiare / cambiare comportamento in runtime fornendo altro Servant. 2. Incapsulamento. Se non vuoi esporre un nuovo metodo nella tua gerarchia di classi. 3. Non esiste una classe genitore comune o non si desidera implementare il metodo per tutti i bambini? Questo è un caso discutibile. Perché dovresti trasmettere il tuo oggetto all'interfaccia, quindi non è una buona idea avere un tale design.

    
risposta data 12.10.2015 - 16:10
fonte

Leggi altre domande sui tag