It has taken longer than I thought to find the time to make a start. But here are the first steps on my Pilgrimage to a Patch:
I must confess to employing a slightly warped form of OO patterns for a while involving the 'personification' of objects.
I've been bundling up chunks of complexity into roles/people, for example 'DatabaseManager', 'AdapterManager' and a menagerie of email robots (Amy, Penny, Daisy etc).
Personification of interfaces has traditionally been a CS no-no and I think this has spilt over into the OO modelling world.
But having 'people' in your system really is a natural pattern especially where your objects have responsibility, functions, duties and roles.
I've always thought tangibility is the enemy of complexity and 'personification' is one way to help make things more tangible. The vocabulary relating to people is much more accessible than abstract patterns. What is a 'singleton' anyway?
WWW::Mechanize is an example of a module that employs a slightly 'personified' interface because it models what a real web user does when they encounter a page - and makes these functions tangible in the mind of the coder.
But I think personifying the OO interfaces can be taken much further and I think 'roles' and 'traits' fit into this well.
I hope Perl6 can push the OO boat out even further ... one way maybe to sacrifice the CS sacred cow of no personification? ;-)
[ Gwass Hopper stops staring into the sky and returns to the Pilgrimage ... ]
Perl6 is already here - it's called "Ruby".