Roles would be one way to solve this, but I think there are better ways.

I have an Object base class which is inherited by other objects eg User, Group, Image. When each of these is loaded, they register their Type with the Object class so that any object can be retrieved using the parent class and blessed into the right package.

I am not sure if this is the right approach. In OO, the Class is traditionally the element which "manages instances", not the Object. However, Perl 5's OO model being what it is, the distinction between class and object are very blurry. But either way, this is all irrelvant since I assume you are not looking to create a domain specific object metamodel to solve you problem.

I would suggest that you instead use the Factory pattern here, which is not all that different from what you are doing, except you are calling your factory "Object". Then within your Factory you can handle all the constraints (singleton or not singleton) and relations (all classes are associated with a group) between your objects as just "configuration" within the factory. This approach would easily fufill all your stated requirements.

-stvn

In reply to Re: Using perl 6 roles in perl 5 by stvn
in thread Using perl 6 roles in perl 5 by clinton

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.