3 ms·
Terminology arguments aside, I remember at least one occassion where I really wanted this in a GoF pattern. I had an interface Repo, with methods getA() and ge
by peeters 14y ago
Terminology arguments aside, I remember at least one occassion where I really wanted this in a GoF pattern.
I had an interface Repo, with methods getA() and getB(). I wanted to overlay a transparent cache a la Proxy (http://en.wikipedia.org/wiki/Proxy_pattern http://en.wikipedia.org/wiki/Proxy_pattern, note its use of "delegate" in its description).
So I had implementations CachingRepo and DataStoreRepo, the first would cache recent calls and the latter would make real calls. CachingRepo would have an instance of Repo that it delegates to on a cache miss.
The issue was that DataStoreRepo.getA() relied on getB(). In a non-Lieberman delegation strategy, that B would always come from the data store, not my cache.
If I understand correctly, in Lieberman delegation getB() could return the cached values, because its "self" would point to the CachingRepo, not "this" in a Java sense.
It's not impossible to do this in Java, there's just not language support for it. The wiring would be cumbersome. Thanks for introducing me to Lieberman's work, but I'll stick with the de facto standard usage of "delegation".