1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/samples/sidemeanings/src/org/apidesign/sidemeanings/NonMixed.java Sat Jun 14 10:04:50 2008 +0200
1.3 @@ -0,0 +1,43 @@
1.4 +package org.apidesign.sidemeanings;
1.5 +
1.6 +// BEGIN: sidemeanings.Mixed.Clean
1.7 +public final class NonMixed {
1.8 + private int counter;
1.9 + private int sum;
1.10 + private final Provider impl;
1.11 +
1.12 + private NonMixed(Provider impl) {
1.13 + this.impl = impl;
1.14 + }
1.15 + public static NonMixed create(Provider impl) {
1.16 + NonMixed api = new NonMixed(impl);
1.17 + Callback callback = new Callback(api);
1.18 + impl.initialize(callback);
1.19 + return api;
1.20 + }
1.21 +
1.22 + public final int apiForClients() {
1.23 + int subclass = impl.toBeImplementedBySubclass();
1.24 + sum += subclass;
1.25 + return sum / counter;
1.26 + }
1.27 +
1.28 + public interface Provider {
1.29 + public void initialize(Callback c);
1.30 + public int toBeImplementedBySubclass();
1.31 + }
1.32 +
1.33 + public static final class Callback {
1.34 + NonMixed api;
1.35 +
1.36 + Callback(NonMixed api) {
1.37 + this.api = api;
1.38 + }
1.39 + public final void toBeCalledBySubclass() {
1.40 + api.counter++;
1.41 + }
1.42 + }
1.43 +}
1.44 +// END: sidemeanings.Mixed.Clean
1.45 +
1.46 +