A mio parere, sono necessari mixaggi quando si dispone di alcune classi diverse che dovrebbero avere la stessa funzionalità.
I buoni esempi di utilizzo dei mix sono le viste basate su classi di Django. Ad esempio, hai alcune classi diverse: FormView, TemplateView, ListView. Tutti hanno una funzionalità simile: devono rendere modelli. Ognuna di queste classi ha un mixin, che aggiunge i metodi richiesti per il rendering del template.
Un altro esempio è se è necessario aggiungere una classe per un'API che restituisce un risultato JSON. Potrebbe anche essere ereditato da una base, classe View. Saltate semplicemente i mixin del modello e definite ciò che vi serve (e probabilmente scrivete il vostro mixin per la codifica JSON).
Inoltre, è possibile sovrascrivere alcuni dei metodi proposti nei mixin che consentono di modificare alcune parti del codice comune per il caso locale. È tutto su OOP, amico!
Per farla breve: i mixaggi aggiungono nuove funzionalità.
I decoratori sono utilizzati per modificare le funzionalità esistenti. Ad esempio, se è necessario registrare ciò che viene restituito da un metodo nella classe. La scelta giusta qui è un decoratore (aggiunto ai metodi appropriati).
Spero che sia utile. In caso contrario, si prega di fare domande. Aggiornerò la mia risposta
fonte
2015-05-19 06:19:49
Questa è una grande domanda, che mi piacerebbe conoscere la risposta, ma purtroppo sarà chiusa perché non è nell'ambito di StackOverflow. Questo perché è "principalmente basato sull'opinione pubblica" - che è una ragione primaria per la chiusura delle domande. http://stackoverflow.com/help/search?q=opinion – GreenAsJade