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
{
}