samples/sidemeanings/src/org/apidesign/sidemeanings/NonMixed.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 10:04:50 +0200
changeset 208 897361847d12
child 326 1657c68af062
permissions -rw-r--r--
Making the example with MixedClass vs. NonMixed solution more real, so it can be unit tested
     1 package org.apidesign.sidemeanings;
     2 
     3 // BEGIN: sidemeanings.Mixed.Clean
     4 public final class NonMixed {
     5     private int counter;
     6     private int sum;
     7     private final Provider impl;
     8     
     9     private NonMixed(Provider impl) {
    10         this.impl = impl;
    11     }
    12     public static NonMixed create(Provider impl) {
    13         NonMixed api = new NonMixed(impl);
    14         Callback callback = new Callback(api);
    15         impl.initialize(callback);
    16         return api;
    17     }
    18 
    19     public final int apiForClients() {
    20         int subclass = impl.toBeImplementedBySubclass();
    21         sum += subclass;
    22         return sum / counter;
    23     }
    24 
    25     public interface Provider {
    26         public void initialize(Callback c);
    27         public int toBeImplementedBySubclass();
    28     }
    29 
    30     public static final class Callback {
    31         NonMixed api;
    32         
    33         Callback(NonMixed api) {
    34             this.api = api;
    35         }
    36         public final void toBeCalledBySubclass() {
    37             api.counter++;
    38         }
    39     }
    40 }
    41 // END: sidemeanings.Mixed.Clean
    42 
    43