Buon modo per passare le variabili per gli elementi comuni ai modelli Mako?
Domanda
Sto utilizzando le funzionalità di eredità di Mako per scomporre gli elementi della pagina comuni, come un colpo di testa e piè di pagina, in un modello "base.mako". controller specifici della pagina utilizzare i propri modelli, che ereditano base.mako.
base.mako ha bisogno di un insieme di variabili - per esempio, il nome dell'utente connesso va nell'intestazione per tutte le pagine. Tuttavia, è il controllore singola pagina che seleziona e rende il modello, ed è quindi responsabile del passaggio variabili da esso.
Preferirei tutti quei controllori di pagina non devo sapere qual è il modello di base ha bisogno nel suo contesto. Che cosa è un buon modo per stabilire il contesto per il modello base in una situazione come questa?
Grazie in anticipo!
Soluzione
Hai due scelte progettuali OO per i controller di pagina.
Caratteristiche comuni possono essere gestiti in due modi.
-
L'ereditarietà. Tutti i controllori di pagina sono sottoclassi di una classe comune che fornisce gli attributi comuni.
-
Delegazione. Tutti i controllori di pagina sono parte di un oleodotto in cui qualche processo comune (prima o dopo il controller pagina) si ripiega nelle informazioni aggiuntive.
Devi scegliere uno.