issues on class design in java
<p>I once saw an example code involving interface and its implementing classes</p>

<pre><code>static final TokenizerFactory SPACE_TOKENIZER_FACTORY
    = new RegExTokenizerFactory("\\S+");

static final TokenizerFactory NORM_TOKENIZER_FACTORY
    = normTokenizerFactory();

static TokenizerFactory normTokenizerFactory() {
    TokenizerFactory factory = SPACE_TOKENIZER_FACTORY;
    factory = new LowerCaseTokenizerFactory(factory);
    return factory;
}


// TokenizerFactory  itself is a interface, i.e., `public interface TokenizerFactory`
// Class LowerCaseTokenizerFactory  implements TokenizerFactory
// Class RegExTokenizerFactory   implements TokenizerFactory
</code></pre>

<p>What interests me is that why NORM_TOKENIZER_FACTORY is defined as above, are there any hidden design considerations(advantages) from the perspective of OO-design?  Moreover, I do not quite understand the relationship between <code>SPACE_TOKENIZER_FACTORY</code>(defined at first) and its usage in the definition in <code>normToeknizerFactory</code></p>
