On Wed, Apr 9, 2014 at 11:16 PM, Thalhammer, Jeffrey Ryan <
[email protected]> wrote:
> On a related matter, I'm having trouble deciding whether to use abstract
> base classes or roles to define the interfaces. I do understand why using
> both doesn't make sense. Bread::Board::Declare works really well with
> class type constraints, so it can automatically figure out what to
> construct for each dependency. But I'm not sure how it would work (if at
> all) using role types. So that's pushing me towards abstract base classes.
One tangent here -- absent some compelling reason (which may or may not
exist here), I'd use roles to define interfaces. Typically, it'd look
something like:
package Thing::Implements::Workspace;
use Moose::Role;
use namespace::autoclean;
requires 'internet_access';
...
etc.
Then your classes -- and other interfaces for that matter -- can simply
consume the interface roles, and you can figure out if some class (or
interface) does an interface by, well, asking its meta-object if it
->does() the interface role.
-Chris
--
Chris Weyl
Ex astris scientia