Mixin (примесь),
что это?
Это такая
концепция в программировании, призванная
помогать решать проблемы DRY (don't repeat
yourself). Вкратце, повторяемый код оформляется,
скажем, в виде отдельного класса. И потом
этот класс вмешивается (примешивается)
к нужному, рабочему классу.
Сделать это
можно массой разных способов, но основная
трудность в том, что код mixin-а должен
знать что-то о устройстве рабочего
класса. Чтобы что-то полезное делать.
Концепция
миксинов ("примесей") впервые была
реализована в языке Flavors (см. раздел
Ресурсы). Источником вдохновения для
этой концепция послужила лавка по
продаже мороженого неподалеку от офиса,
в котором происходила разработка этого
языка. Эта лавка предлагала "чистые"
сорта мороженого с любыми дополнительными
добавками (тертый шоколад, карамельные
крошки, орехи и так далее) по желанию
клиента.
В этом посте
я поразмышляю на тему статического
полиморфизма в С++, архитектурных
решениях, строящихся на его основе.
Рассмотрю интересную идиому — CRTP.
Приведу несколько примеров ее
использования. В частности, рассмотрю
концепцию MixIn классов
In Python, mixins
allow a programmer to package a set of clearly defined and cohesive
methods into a unit that can then be used to add functionality to
other classes by “mixing in” these methods. This programming
style, when used correctly, can lead to well-organized code as well
as improved readability
Python supports a
simple type of multiple inheritance which allows the creation of
Mixins. Mixins are a sort of class that is used to "mix in"
extra properties and methods into a class. This allows you to create
classes in a compositional style.
Mixins are a really
great concept but I often find that people use them incorrectly which
can lead to some bugs
Recipe for MixIns in
PythonLanguage which allows in-place runtime mixing and unmixing. As
a bonus, there is a 'functional-style' mixin function, which
preserves the base class
original post http://vasnake.blogspot.com/2015/03/mixin.html
Комментариев нет:
Отправить комментарий