Well, I Read up on Class::Accessor and Class::Delegation. The latter didn't seem particularly applicable to my situation, I took the time to look through Class::Accessor's source code. The way it sets accessors/mutators is actually quite similar to the technique I use for adding services that are just accessors.

So while it's nice to see that i was thinking along similar lines for that, the addServices provides for more than simple accessors/mutators, as it can be passed any subroutine reference to be installed as a class method, as well as any object which it will build an accessor for.

I'm also, after thinking on it some more, not so convinced that it's such a bad thing that the code really only addresses architecture. Because that was precisely my intention. It is up to the subclasses to use the architecture to accomplish something. As soon as i try to make the base class accomplish something beyond being a framework, i've made assumptions on how people want to use this code (much the same as how CGI::Application is primarily a frame work for the Run Mode paradigm, but integrates CGI.pm and HTML::Template as useful tools).

For an example of a module that 'does something', take a look at WWW::Pipeline::Example. I should note here that if you don't want to download the tarball, click on any documentation link and then change the .html to a .pm to see the original source.

As far as extensability metaphors go, I haven't thought of a better one than the concept of a Plugin as being a package that bundles services and handlers.

I hope this gives a bit more insight into the design decisions I've made so far.


In reply to Re: Bound for CPAN: Reviews Requested for Application::Pipeline by AidanLee
in thread Bound for CPAN: Reviews Requested for Application::Pipeline by AidanLee

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.