Почему Builder должен быть интерфейсом? Почему бы просто не сделать строительный завод? Похоже, вы хотите связать интерфейс с этой конкретной реализацией.
public final class SpriteBuilder {
private final Foo foo;
private int property = 0;
public SpriteBuilder(Foo importantMandatoryValue) {
this.foo = importantMandatoryValue;
}
public SpriteBuilder setProperty(int theProperty) {
this.property = property;
return this;
}
public Sprite build() {
return new GameObjectImpl(foo, property);
}
}
Вы можете вызвать SpriteBuilder
a GameObjectImplFactory
... и создать аналогичный класс для каждой из ваших Sprite
реализаций. Вам просто нужно убедиться, что они вернут только тип Sprite
.
В вашем примере вы бы сказали что-то вроде public class GameObjectImplFactory implements Builder<Sprite>
.
Надеюсь, что это помогает и имеет смысл: -).