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?