Delegates: Difference between revisions

Content added Content deleted
Line 1,585: Line 1,585:
default implementation
default implementation
delegate implementation</pre>
delegate implementation</pre>

=={{header|Objeck}}==
{{trans|Java}}
<lang objeck>interface Thingable {
method : virtual : public : Thing() ~ String;
}
class Delegator {
@delegate : Thingable;

New() {
}

method : public : SetDelegate(delegate : Thingable) ~ Nil {
@delegate := delegate;
}

method : public : Operation() ~ String {
if(@delegate = Nil) {
return "default implementation";
}
else {
return @delegate->Thing();
};
}
}

class Delegate implements Thingable {
New() {
}

method : public : Thing() ~ String {
return "delegate implementation";
}
}

class Example {
function : Main(args : String[]) ~ Nil {
# Without a delegate:
a := Delegator->New();
Runtime->Assert(a->Operation()->Equals("default implementation"));
# With a delegate:
d := Delegate->New();
a->SetDelegate(d);
Runtime->Assert(a->Operation()->Equals("delegate implementation"));

# Same as the above, but with an anonymous class:
a->SetDelegate(Base->New() implements Thingable {
New() {}
method : public : Thing() ~ String {
return "anonymous delegate implementation";
}
});

Runtime->Assert(a->Operation()->Equals("anonymous delegate implementation"));
}
}
</lang>



=={{header|Objective-C}}==
=={{header|Objective-C}}==
Line 1,715: Line 1,775:
return 0;
return 0;
}</lang>
}</lang>



=={{header|Oforth}}==
=={{header|Oforth}}==