Why not adopt me?
NAME
MooseX::ABC - abstract base classes for Moose
VERSION
version 0.06
SYNOPSIS
package Shape;
use Moose;
use MooseX::ABC;
requires 'draw';
package Circle;
use Moose;
extends 'Shape';
sub draw {
# stuff
}
my $shape = Shape->new; # dies
my $circle = Circle->new; # succeeds
package Square;
use Moose;
extends 'Shape'; # dies, since draw is unimplemented
DESCRIPTION
NOTE: This module is almost certainly a bad idea. You really want to just be using a role instead!
This module adds basic abstract base class functionality to Moose. Doing use MooseX::ABC
turns the using class into an abstract class - it cannot be instantiated. It also allows you to mark certain methods in the class as "required", meaning that if a class inherits from this class without implementing that method, it will die at compile time. Abstract subclasses are exempt from this, however - if you extend a class with another class which uses MooseX::ABC
, it will not be required to implement every required method (and it can also add more required methods of its own). Only concrete classes (classes which do not use MooseX::ABC
) are required to implement all of their ancestors' required methods.
FUNCTIONS
requires METHOD_NAMES
Takes a list of methods that classes inheriting from this one must implement. If a class inherits from this class without implementing each method listed here, an error will be thrown when compiling the class.
SEE ALSO
AUTHOR
Jesse Luehrs <doy at tozt dot net>
COPYRIGHT AND LICENSE
This software is copyright (c) 2012 by Jesse Luehrs.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.