1.1 --- a/samples/sidemeanings/src/org/apidesign/sidemeanings/NonMixed.java Fri Mar 27 20:30:39 2009 +0100
1.2 +++ b/samples/sidemeanings/src/org/apidesign/sidemeanings/NonMixed.java Wed Apr 01 18:21:39 2009 +0200
1.3 @@ -1,42 +1,22 @@
1.4 package org.apidesign.sidemeanings;
1.5
1.6 +import org.apidesign.sidemeanings.NonMixedFactory.Provider;
1.7 +
1.8 // BEGIN: sidemeanings.Mixed.Clean
1.9 public final class NonMixed {
1.10 - private int counter;
1.11 + int counter;
1.12 private int sum;
1.13 private final Provider impl;
1.14
1.15 - private NonMixed(Provider impl) {
1.16 + NonMixed(Provider impl) {
1.17 this.impl = impl;
1.18 }
1.19 - public static NonMixed create(Provider impl) {
1.20 - NonMixed api = new NonMixed(impl);
1.21 - Callback callback = new Callback(api);
1.22 - impl.initialize(callback);
1.23 - return api;
1.24 - }
1.25
1.26 public final int apiForClients() {
1.27 int subclass = impl.toBeImplementedBySubclass();
1.28 sum += subclass;
1.29 return sum / counter;
1.30 }
1.31 -
1.32 - public interface Provider {
1.33 - public void initialize(Callback c);
1.34 - public int toBeImplementedBySubclass();
1.35 - }
1.36 -
1.37 - public static final class Callback {
1.38 - NonMixed api;
1.39 -
1.40 - Callback(NonMixed api) {
1.41 - this.api = api;
1.42 - }
1.43 - public final void toBeCalledBySubclass() {
1.44 - api.counter++;
1.45 - }
1.46 - }
1.47 }
1.48 // END: sidemeanings.Mixed.Clean
1.49
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2.2 +++ b/samples/sidemeanings/src/org/apidesign/sidemeanings/NonMixedFactory.java Wed Apr 01 18:21:39 2009 +0200
2.3 @@ -0,0 +1,33 @@
2.4 +package org.apidesign.sidemeanings;
2.5 +
2.6 +// BEGIN: sidemeanings.Mixed.Clean.Factory
2.7 +public final class NonMixedFactory {
2.8 + private NonMixedFactory() {
2.9 + }
2.10 +
2.11 + public static NonMixed create(Provider impl) {
2.12 + NonMixed api = new NonMixed(impl);
2.13 + Callback callback = new Callback(api);
2.14 + impl.initialize(callback);
2.15 + return api;
2.16 + }
2.17 +
2.18 + public interface Provider {
2.19 + public void initialize(Callback c);
2.20 + public int toBeImplementedBySubclass();
2.21 + }
2.22 +
2.23 + public static final class Callback {
2.24 + final NonMixed api;
2.25 +
2.26 + Callback(NonMixed api) {
2.27 + this.api = api;
2.28 + }
2.29 + public final void toBeCalledBySubclass() {
2.30 + api.counter++;
2.31 + }
2.32 + }
2.33 +}
2.34 +// END: sidemeanings.Mixed.Clean.Factory
2.35 +
2.36 +
3.1 --- a/samples/sidemeanings/test/org/apidesign/sidemeanings/test/MixedTest.java Fri Mar 27 20:30:39 2009 +0100
3.2 +++ b/samples/sidemeanings/test/org/apidesign/sidemeanings/test/MixedTest.java Wed Apr 01 18:21:39 2009 +0200
3.3 @@ -3,7 +3,8 @@
3.4
3.5 import org.apidesign.sidemeanings.MixedClass;
3.6 import org.apidesign.sidemeanings.NonMixed;
3.7 -import org.apidesign.sidemeanings.NonMixed.Callback;
3.8 +import org.apidesign.sidemeanings.NonMixedFactory;
3.9 +import org.apidesign.sidemeanings.NonMixedFactory.Callback;
3.10 import org.junit.After;
3.11 import org.junit.Before;
3.12 import org.junit.Test;
3.13 @@ -40,7 +41,7 @@
3.14
3.15 // BEGIN: sidemeanings.Mixed.Clean.Use
3.16 @Test public void useWithoutMixedMeanings() {
3.17 - class AddFiveMixedCounter implements NonMixed.Provider {
3.18 + class AddFiveMixedCounter implements NonMixedFactory.Provider {
3.19 private Callback callback;
3.20
3.21 public int toBeImplementedBySubclass() {
3.22 @@ -52,7 +53,7 @@
3.23 callback = c;
3.24 }
3.25 }
3.26 - NonMixed add5 = NonMixed.create(new AddFiveMixedCounter());
3.27 + NonMixed add5 = NonMixedFactory.create(new AddFiveMixedCounter());
3.28 assertEquals("5/1 = 5", 5, add5.apiForClients());
3.29 assertEquals("10/2 = 5", 5, add5.apiForClients());
3.30 assertEquals("15/3 = 5", 5, add5.apiForClients());