[PEAK] Jumping Aspects

Phillip J. Eby pje at telecommunity.com
Sat Jul 31 11:30:57 EDT 2004

At 11:02 PM 7/30/04 -0700, Robert Brewer wrote:
>Phillip J. Eby wrote:
> > ...what if we just changed the object's class on-the-fly?
> >
> > It seems sort of weird, but basically what would happen is
> > that if you called someObject.setFoo(42), then there would
> > be some functions getting called to do DB-specific or UI
> > operations, following which the __class__ of 'someObject'
> > would change to the abstract domain class, and the original
> > "abstract" setFoo(42) would execute.  Finally, the class
> > would return to being the workspace-specific class.
>Q: What would be the drawback of the workspace-specific class possessing
>[a reference to] the abstract class rather than _becoming_ it? Has-a
>versus is-a.

The class doesn't "become" anything.  The instance's __class__ will change 
to point to a different class whenever the set of applicable advice changes.

Think of it as the Strategy pattern, but implemented by actually changing 
the object's type instead of delegating to a type-like object.

More information about the PEAK mailing list