App-Kit
view release on metacpan or search on metacpan
lib/App/Kit.pm view on Meta::CPAN
Just create the object and use it everywhere. Done, it all works the same with no boiler plate required besides Foo->instance and use it when you need.
=head2 only what you need, when you need it
Only load and instantiate the things your code actually does, with no effort.
Reuse them throughout the code base, again, with no effort!
=head2 use default objects or set your own
The defaults will work and as your project expands you can customize if needed without needing to refactor your code.
For example, once you sprint the localization setup, you can change your classâs locale() to use your object.
=head2 easy mocking (for your tests!)
By default the lazy façade methods are readonly (technically 'rwp' so the class can fiddle with them internally if it needs to).
You can change make them readwrite via either of 2 mechanisms before the class is built via use().
Either:
( run in 0.962 second using v1.01-cache-2.11-cpan-5b529ec07f3 )