23 lines
460 B
Io
23 lines
460 B
Io
Delegator := Object clone do(
|
|
delegate ::= nil
|
|
operation := method(
|
|
if((delegate != nil) and (delegate hasSlot("thing")),
|
|
delegate thing,
|
|
"default implementation"
|
|
)
|
|
)
|
|
)
|
|
|
|
Delegate := Object clone do(
|
|
thing := method("delegate implementation")
|
|
)
|
|
|
|
a := clone Delegator
|
|
a operation println
|
|
|
|
a setDelegate("A delegate may be any object")
|
|
a operation println
|
|
|
|
a setDelegate(Delegate clone)
|
|
a operation println
|