Naik, это если делать по-твоему.
В общем у меня получилось.
Создаём интерфейсы ImageInterface, ImageInitializer и класс, который будет хранить один экземпляр инициализатора и статические методы инициализации.
public interface ImageInterface {
public int getWidth();
public int getHeight();
}
public interface ImageInitializer {
public ImageInterface init(String res) throws IOException;
public ImageInterface init(InputStream is) throws IOException;
}
public class JecpImage {
public static ImageInitializer imageInitializer;
public static ImageInterface createImage(String res) throws IOException {
return imageInitializer.init(res);
}
public static ImageInterface createImage(InputStream is) throws IOException {
return imageInitializer.init(is);
}
}
В бэкэнде создаём класс, реализующий интерфейс ImageInitializer:
public class JecpImageInitializer implements ImageInitializer {
@Override
public ImageInterface init(String res) throws IOException {
return new ImageSE(res);
}
@Override
public ImageInterface init(InputStream is) throws IOException {
return new ImageSE(is);
}
}
Вот это
new - то, чего мне не хватало, чтобы были разные ссылки на объекты.
А также указываем, какой инициализатор картинок мы хотим использовать:
JecpImage.imageInitializer = new JecpImageInitializer();
Теперь при вызове JecpImage.createImage будет вызываться JecpImageInitializer, который создаст нам новый объект уже конкретной картинки.
__________________