in reply to OO Design question: configuration
Some other options:
- Mixin/Role/Trait. Gives every object that needs it a config method.
- Config factory. This is a singleton itself, but it can hand out configuration objects to whoever requests it.
The mixin is conceptually very simple:
Which, when used (a simple use My::ConfigMixin; will do), gives your object the method config. Since its first param is your requesting object, you can do all sorts of filtering based on $self (access control, limiting output, etc).package My::ConfigMixin; use base qw/ Exporter /; our @EXPORT = qw/ config /; sub config { my $self = shift; somehow_get_config(@_); }
The main issue here is maintaining state. Pretty much your only option is to use package variables in My::ConfigMixin, which can get messy. I'd be interested to learn more about Traits that need state, but sofar I'm a newbie on the subject.
The factory might be a better alternative: it can maintain state on its singleton instance.
In Section
Seekers of Perl Wisdom