http://qs321.pair.com?node_id=357809

Belgarion has asked for the wisdom of the Perl Monks concerning the following question:

Has the community reached a consensus on the preferred way to implement a mixin class? After reviewing some common modules, I have come across at least three different ways of implementing a mixin class.

Using Standard Perl Inheritance
A class like Class::Accessor uses the Perl inheritance mechanism to bring their methods into the package name-space. If you want to bring in more mixin classes, you need to add them to your use base qw(..) statement.
Customized import And Manipulation of the Symbol Table
Unlike Class::Accessor, Class::Trigger uses a customized import function to manipulate the package's symbol table to add the new methods.
Export methods into Package Name-Space
Finally, a module like Class::DBI::FromCGI uses Exporter to export the method names directly into the package's name-space.

There may be other ways of implementing a mixin class. Are any of the methods listed above the preferred way, or is there another method altogether?