public class ImageReaderFactory { public static ImageReader getImageReader(ImageTypes typ){ if (typ == null) throw new IllegalArgumentException(); if (typ.equals(ImageTypes.JPG)) return new JpgReader(); if (typ.equals(ImageTypes.BMP)) return new BmpReader(); if (typ.equals(ImageTypes.PNG)) return new PngReader(); throw new IllegalArgumentException(); } } Вот класс ImageReader. Идет проверка на соответствие типов GPG, BMP и PNG. Если не совпадает ни с одним из типов, то выкидывается ошибка. Зачем еще доп. проверка на null?