samples/sidemeanings/src/org/apidesign/sidemeanings/Public.java
changeset 324 a9ad091ed069
parent 99 4bf599099de7
     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      }