jtulach@326: package org.apidesign.sidemeanings; jtulach@326: jtulach@326: // BEGIN: sidemeanings.Mixed.Clean.Factory jtulach@326: public final class NonMixedFactory { jtulach@326: private NonMixedFactory() { jtulach@326: } jtulach@326: jtulach@326: public static NonMixed create(Provider impl) { jtulach@326: NonMixed api = new NonMixed(impl); jtulach@326: Callback callback = new Callback(api); jtulach@326: impl.initialize(callback); jtulach@326: return api; jtulach@326: } jtulach@326: jtulach@326: public interface Provider { jtulach@326: public void initialize(Callback c); jtulach@326: public int toBeImplementedBySubclass(); jtulach@326: } jtulach@326: jtulach@326: public static final class Callback { jtulach@326: final NonMixed api; jtulach@326: jtulach@326: Callback(NonMixed api) { jtulach@326: this.api = api; jtulach@326: } jtulach@326: public final void toBeCalledBySubclass() { jtulach@326: api.counter++; jtulach@326: } jtulach@326: } jtulach@326: } jtulach@326: // END: sidemeanings.Mixed.Clean.Factory jtulach@326: jtulach@326: