Each cat is displayed in full content of adequate pattern. So, cat.toString() is used. But no validation.
package pl.codegym.task.task14.task1404;
import java.io.*;
/*
Koty
*/
public class Solution {
public static void main(String[] args) throws Exception {
//tutaj wpisz swój kod
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String name = null;
while (true) {
try {
name = reader.readLine();
if (name.equals(""))
break;
}
catch (Exception e) {
break;
}
Cat cat = CatFactory.getCatByKey(name);
System.out.println(cat.toString());
//System.out.println()CatFactory.getCatByKey(name);
}
}
static class CatFactory {
static Cat getCatByKey(String key) {
Cat cat = null;
if ("Szefu".equals(key)) {
cat = new MaleCat("Duży chłopiec");
} else if ("Kocica".equals(key)) {
cat = new FemaleCat("Mania");
} else if ("Kafel".equals(key)) {
cat = new FemaleCat("Dachówka");
} else {
cat = new Cat(key);
}
return cat;
}
}
static class Cat {
private String name;
protected Cat(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public String toString() {
return "Jestem " + getName() + ", podwórkowy kocur";
}
}
static class MaleCat extends Cat {
MaleCat(String name) {
super(name);
}
public String toString() {
return "Jestem super kocur i nazywam się " + getName();
}
}
static class FemaleCat extends Cat {
FemaleCat(String name) {
super(name);
}
public String toString() {
return "Jestem słodką kicią i na imię mi " + getName();
}
}
}