package com.javarush.test.level16.lesson13.bonus01;
import com.javarush.test.level16.lesson13.bonus01.ImageReaderFactory;
import com.javarush.test.level16.lesson13.bonus01.common.ImageReader;
import com.javarush.test.level16.lesson13.bonus01.common.ImageTypes;
/* Factory method pattern
1. Внимательно посмотри, какие классы у тебя есть.
2. В отдельных файлах в пакете common создай классы JpgReader, PngReader, BmpReader, которые реализуют интерфейс ImageReader.
3. В отдельном файле в пакете bonus01 создай класс ImageReaderFactory с одним методом.
3.1. Подумай, как он должен называться.
3.2. Подумай, какие модификаторы должны быть у этого метода.
4. Этот метод должен:
4.1. для каждого значения из ImageTypes возвращать соответствующий Reader, например, для ImageTypes.JPG - JpgReader;
4.2. если передан неправильный параметр, то выбросить исключение IllegalArgumentException("Неизвестный тип картинки").
*/
public class Solution {
public static void main(String[] args) {
ImageReader reader = ImageReaderFactory.getReader(ImageTypes.JPG);
}
}
package com.javarush.test.level16.lesson13.bonus01;
import com.javarush.test.level16.lesson13.bonus01.common.*;
public class ImageReaderFactory
{
public static ImageReader getReader(ImageTypes type)
{
if (type == (ImageTypes.JPG)) return new JpgReader();
else if (type == (ImageTypes.BMP)) return new BmpReader();
else if (type == (ImageTypes.PNG)) return new PngReader();
else throw new IllegalArgumentException("Неизвестный тип картинки");
}
}
ПАКЕТ COMMON:
package com.javarush.test.level16.lesson13.bonus01.common;
public class BmpReader implements ImageReader
{
}
package com.javarush.test.level16.lesson13.bonus01.common;
public class PngReader implements ImageReader
{
}
package com.javarush.test.level16.lesson13.bonus01.common;
public class JpgReader implements ImageReader
{
}
Leave A Comment