Interfaces, static classes problem
<p>I am currently moving all my Game code to another package so that I can simply reuse it when I create another similar game.</p>

<p>I am having some problems with this though.</p>

<pre><code>public interface Sprite {
...
}

abstract class AbstractSprite implements Sprite {
...
}

public interface Builder&lt;T&gt; {
    public T build();
}

class GameObjectImpl extends AbstractSprite {
    public static class GameObjectBuilder implements Builder&lt;GameObjectImpl&gt; {
    ...
    }
}
</code></pre>

<p>I am using a Builder Pattern to create my GameObjectImpl objects.  However, the client (the person using my game engine) will only have access to the Sprite interface.</p>

<p>How can I get the client to create GameObjectImpl using builder and only having access to the Sprite Interface?</p>
