1.1 --- a/samples/sidemeanings/src/org/apidesign/sidemeanings/Public.java Sat Jun 14 09:54:19 2008 +0200
1.2 +++ b/samples/sidemeanings/src/org/apidesign/sidemeanings/Public.java Wed Mar 25 22:14:46 2009 +0100
1.3 @@ -1,27 +1,41 @@
1.4 package org.apidesign.sidemeanings;
1.5
1.6 -public final class Public {
1.7 - private Public() {}
1.8 +public abstract class Public {
1.9 + int counter;
1.10 +
1.11 + Public() {}
1.12 +
1.13 + public abstract void increment();
1.14 +
1.15 + public final void incrementTenTimes() {
1.16 + for (int i = 0; i < 10; i++) {
1.17 + increment();
1.18 + }
1.19 + }
1.20 +
1.21 + public final void assertCounter(int expected) {
1.22 + assert expected == counter : "Expected " + expected + " but was " + counter;
1.23 + }
1.24
1.25
1.26 - public abstract class Dirty {
1.27 + public static abstract class Dirty extends Public {
1.28 // BEGIN: sidemeanings.Public.Dirty
1.29 - public void method() {
1.30 - someCode();
1.31 + public void increment() {
1.32 + // internal implementation
1.33 + counter++;
1.34 }
1.35 // END: sidemeanings.Public.Dirty
1.36 - private void someCode() {
1.37 - }
1.38 }
1.39
1.40
1.41 - public abstract class Clean {
1.42 + public static abstract class Clean extends Public {
1.43 // BEGIN: sidemeanings.Public.Clean
1.44 - public final void method() {
1.45 - methodImpl();
1.46 + public final void increment() {
1.47 + overridableIncrement();
1.48 }
1.49 - protected abstract void methodImpl();
1.50 - protected final void someCode() {
1.51 + protected abstract void overridableIncrement();
1.52 + protected final void defaultIncrement() {
1.53 + counter++;
1.54 }
1.55 // END: sidemeanings.Public.Clean
1.56 }