Доброго дня.
Решаю задачу Фабрики 2 и как-то чего-то оно не принимается.
Фабрики (2)
1. Создай публичный класс MaleFactory в пакете male с публичным методом getPerson, который принимает один параметр int age (возраст) и возвращает нужный объект одного из классов, реализующих интерфейс Human.
2. Логика метода getPerson: используя константу MAX_AGE определи, какой класс соответствует переданному возрасту.
Например, age=4 соответствует мальчику (KidBoy), age=15 — подростку (TeenBoy), остальной возраст — взрослому мужчине.
3. В методе main класса Solution создай фабрику и вызови у нее метод getPerson три раза с такими параметрами: 99, 4, 15.
Выведи результат в консоль.
Вывод должен быть следующий:
Man{}
KidBoy{}
TeenBoy{}
Молодец, Фабрика готова! Это паттерн Factory Method.
Solution.java
package com.javarush.task.task37.task3702;
public class Solution {
public static void main(String[] args) {
MaleFactory maleFactory = new MaleFactory();
System.out.println(maleFactory.getPerson(99));
System.out.println(maleFactory.getPerson(4));
System.out.println(maleFactory.getPerson(15));
}
}
MaleFactory.java
package com.javarush.task.task37.task3702;
import com.javarush.task.task37.task3702.male.KidBoy;
import com.javarush.task.task37.task3702.male.Man;
import com.javarush.task.task37.task3702.male.TeenBoy;
public class MaleFactory {
public Human getPerson(int age) {
if (age <= KidBoy.MAX_AGE) {
return new KidBoy();
} else if (age <= TeenBoy.MAX_AGE) {
return new TeenBoy();
} else {
return new Man();
}
}
}
Human.java
package com.javarush.task.task37.task3702;
public interface Human {
}
male/KidBoy.java
package com.javarush.task.task37.task3702.male;
import com.javarush.task.task37.task3702.Human;
public class KidBoy implements Human {
public static final int MAX_AGE = 12;
@Override
public String toString() {
return "KidBoy{}";
}
}
male/Man.java
package com.javarush.task.task37.task3702.male;
import com.javarush.task.task37.task3702.Human;
public class Man implements Human {
@Override
public String toString() {
return "Man{}";
}
}
male/TeenBoy.java
package com.javarush.task.task37.task3702.male;
import com.javarush.task.task37.task3702.Human;
public class TeenBoy implements Human {
public static final int MAX_AGE = 19;
@Override
public String toString() {
return "TeenBoy{}";
}
}
Результат проверки:
Что не так?package com.javarush.task.task37.task3702;
public class Solution {
public static void main(String[] args) {
MaleFactory maleFactory = new MaleFactory();
System.out.println(maleFactory.getPerson(99));
System.out.println(maleFactory.getPerson(4));
System.out.println(maleFactory.getPerson(15));
}
}