NAME
Data::Object::State
ABSTRACT
Singleton Builder for Perl 5
SYNOPSIS
package Example;
use Data::Object::State;
has data => (
is => 'ro'
);
package main;
my $example = Example->new;
DESCRIPTION
This package provides an abstract base class for creating singleton
classes. This package is derived from Moo and makes consumers Moo
classes (with all that that entails). This package also injects a BUILD
method which is responsible for hooking into the build process and
returning the appropriate state.
METHODS
This package implements the following methods:
new
renew() : Object
The new method sets the internal state and returns a new class
instance. Subsequent calls to new will return the same instance as was
previously returned.
new example #1
package Example::New;
use Data::Object::State;
has data => (
is => 'ro'
);
my $example1 = Example::New->new(data => 'a');
my $example2 = Example::New->new(data => 'b');
[$example1, $example2]
renew
renew() : Object
The renew method resets the internal state and returns a new class
instance. Each call to renew will discard the previous state, then
reconstruct and stash the new state as requested.
renew example #1
package Example::Renew;
use Data::Object::State;
has data => (
is => 'ro'
);
my $example1 = Example::Renew->new(data => 'a');
my $example2 = $example1->renew(data => 'b');
my $example3 = Example::Renew->new(data => 'c');
[$example1, $example2, $example3]
AUTHOR
Al Newkirk, awncorp@cpan.org
LICENSE
Copyright (C) 2011-2019, Al Newkirk, et al.
This is free software; you can redistribute it and/or modify it under
the terms of the The Apache License, Version 2.0, as elucidated in the
"license file"
<https://github.com/iamalnewkirk/data-object-state/blob/master/LICENSE>.
PROJECT
Wiki <https://github.com/iamalnewkirk/data-object-state/wiki>
Project <https://github.com/iamalnewkirk/data-object-state>
Initiatives
<https://github.com/iamalnewkirk/data-object-state/projects>
Milestones
<https://github.com/iamalnewkirk/data-object-state/milestones>
Contributing
<https://github.com/iamalnewkirk/data-object-state/blob/master/CONTRIBUTE.md>
Issues <https://github.com/iamalnewkirk/data-object-state/issues>