# HG changeset patch # User Jaroslav Tulach # Date 1238602899 -7200 # Node ID 1657c68af0623e626f3d2bae56caa0a40076fbd5 # Parent 4553c2885ce6454d647c298eaa933078d7c74491 Spliting the NonMixed example into the API class and factory class diff -r 4553c2885ce6 -r 1657c68af062 samples/sidemeanings/src/org/apidesign/sidemeanings/NonMixed.java --- a/samples/sidemeanings/src/org/apidesign/sidemeanings/NonMixed.java Fri Mar 27 20:30:39 2009 +0100 +++ b/samples/sidemeanings/src/org/apidesign/sidemeanings/NonMixed.java Wed Apr 01 18:21:39 2009 +0200 @@ -1,42 +1,22 @@ package org.apidesign.sidemeanings; +import org.apidesign.sidemeanings.NonMixedFactory.Provider; + // BEGIN: sidemeanings.Mixed.Clean public final class NonMixed { - private int counter; + int counter; private int sum; private final Provider impl; - private NonMixed(Provider impl) { + NonMixed(Provider impl) { this.impl = impl; } - public static NonMixed create(Provider impl) { - NonMixed api = new NonMixed(impl); - Callback callback = new Callback(api); - impl.initialize(callback); - return api; - } public final int apiForClients() { int subclass = impl.toBeImplementedBySubclass(); sum += subclass; return sum / counter; } - - public interface Provider { - public void initialize(Callback c); - public int toBeImplementedBySubclass(); - } - - public static final class Callback { - NonMixed api; - - Callback(NonMixed api) { - this.api = api; - } - public final void toBeCalledBySubclass() { - api.counter++; - } - } } // END: sidemeanings.Mixed.Clean diff -r 4553c2885ce6 -r 1657c68af062 samples/sidemeanings/src/org/apidesign/sidemeanings/NonMixedFactory.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/sidemeanings/src/org/apidesign/sidemeanings/NonMixedFactory.java Wed Apr 01 18:21:39 2009 +0200 @@ -0,0 +1,33 @@ +package org.apidesign.sidemeanings; + +// BEGIN: sidemeanings.Mixed.Clean.Factory +public final class NonMixedFactory { + private NonMixedFactory() { + } + + public static NonMixed create(Provider impl) { + NonMixed api = new NonMixed(impl); + Callback callback = new Callback(api); + impl.initialize(callback); + return api; + } + + public interface Provider { + public void initialize(Callback c); + public int toBeImplementedBySubclass(); + } + + public static final class Callback { + final NonMixed api; + + Callback(NonMixed api) { + this.api = api; + } + public final void toBeCalledBySubclass() { + api.counter++; + } + } +} +// END: sidemeanings.Mixed.Clean.Factory + + diff -r 4553c2885ce6 -r 1657c68af062 samples/sidemeanings/test/org/apidesign/sidemeanings/test/MixedTest.java --- a/samples/sidemeanings/test/org/apidesign/sidemeanings/test/MixedTest.java Fri Mar 27 20:30:39 2009 +0100 +++ b/samples/sidemeanings/test/org/apidesign/sidemeanings/test/MixedTest.java Wed Apr 01 18:21:39 2009 +0200 @@ -3,7 +3,8 @@ import org.apidesign.sidemeanings.MixedClass; import org.apidesign.sidemeanings.NonMixed; -import org.apidesign.sidemeanings.NonMixed.Callback; +import org.apidesign.sidemeanings.NonMixedFactory; +import org.apidesign.sidemeanings.NonMixedFactory.Callback; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -40,7 +41,7 @@ // BEGIN: sidemeanings.Mixed.Clean.Use @Test public void useWithoutMixedMeanings() { - class AddFiveMixedCounter implements NonMixed.Provider { + class AddFiveMixedCounter implements NonMixedFactory.Provider { private Callback callback; public int toBeImplementedBySubclass() { @@ -52,7 +53,7 @@ callback = c; } } - NonMixed add5 = NonMixed.create(new AddFiveMixedCounter()); + NonMixed add5 = NonMixedFactory.create(new AddFiveMixedCounter()); assertEquals("5/1 = 5", 5, add5.apiForClients()); assertEquals("10/2 = 5", 5, add5.apiForClients()); assertEquals("15/3 = 5", 5, add5.apiForClients());