Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: OO Design question: configuration

by rhesa (Vicar)
on May 19, 2007 at 16:36 UTC ( #616337=note: print w/ replies, xml ) Need Help??


in reply to OO Design question: configuration

Some other options:

  1. Mixin/Role/Trait. Gives every object that needs it a config method.
  2. Config factory. This is a singleton itself, but it can hand out configuration objects to whoever requests it.

The mixin is conceptually very simple:

package My::ConfigMixin; use base qw/ Exporter /; our @EXPORT = qw/ config /; sub config { my $self = shift; somehow_get_config(@_); }
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).

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.


Comment on Re: OO Design question: configuration
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://616337]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (10)
As of 2015-07-04 14:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (60 votes), past polls