Добрый день. Поясните пожалуйста как выполнить задание: Дан абстрактный класс прямоугольника Rectangle. А также интерфейс фабрики прямоугольников RectangleFactory. 1. Создайте конкретный класс RectangleFactoryImpl реализующий RectangleFactory 2. Фабрика должна возвращать экземпляры классов унаследованные от Rectangle и реализующие методы draw и getSquare 3. getSquare возвращает площадь прямоугольника int. 4. draw возвращает String в виде столбцов и строк заполненных звездочками. Например: *** *** *** *** где число столбцов width = 3, а число строк height = 4. Последняя строка звездочек также содержит перевод строки в конце. Для проверки решения щелкните Check Ожидаемый результат: Тесты должны завершиться успешно с надписью Correct. Код Rectangle:
public abstract class Rectangle {
    protected int width;
    protected int height;

    public Rectangle(int width, int height) {
        this.width = width;
        this.height = height;
    }

    public Rectangle() {
        this(25, 10);
    }

    public abstract int getSquare();
    public abstract String draw();

    public int getWidth() {
        return width;
    }

    public int getHeight() {
        return height;
    }
}
Код RectangleFactory:
public abstract class RectangleFactory {
    public abstract Rectangle getRectangle();
    public abstract Rectangle getRectangle(int witdh, int height);
}
(задание 3,4) сделал:
public class RectangleFactoryImpl extends RectangleFactory {

    @Override
    public Rectangle getRectangle() {
        Rectangle rectangle = new Rectangle() {
            @Override
            public int getSquare() {
                return 0;
            }

            @Override
            public String draw() {
                return null;
            }
        };
        return rectangle;
    }

    @Override
    public Rectangle getRectangle(int witdh, int height) {
        return null;
    }
    public int getSquare (int witdh, int height){
        return witdh * height;
    }

    public String draw (int witdh, int height){
        StringBuilder tabl = new StringBuilder();

        if (witdh > 0 & height > 0){
            for(int i = 0; i < height; i++)
            {
                for(int j = 0; j < witdh; j++){
                    tabl.append("*");
                }
                tabl.append("\n");
            }
        }

        return tabl.toString();
    }

}
Не понимаю как сделать п. 2. Подскажите пожалуйста. На сколько я понимаю при вызове примерно так:
RectangleFactory factory = new RectangleFactoryImpl()
по переменной factory должны быть доступны getRectangle() и getRectangle(int witdh, int height). А уже после вызова Rectangle rectangle = factory.getRectangle(); должны быть доступны public int getSquare (int witdh, int height) и public String draw (int witdh, int height) но в данной ситуации не понимаю откуда мы получаем int witdh, int height.