Вроде все работает но...
1. Объекты создаются и возвращаются в соответствии с переданной строкой.
2. А на счет вызывать метод MovieFactory.getMovie() даже для некорректно введённой строки, реализовал как понял... через default в case... но все равно не проходит...
Может я что-то не так сделал с наследованием (никак полноценно не уложить в голове, как только чуть более сложные манипуляции)....
package com.javarush.task.task14.task1414;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;
/*
MovieFactory
*/
public class Solution {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
String key = scanner.nextLine();
while (key.equals("cartoon") || key.equals("thriller") || key.equals("soapOpera")) {
switch (key) {
case ("cartoon"):
//MovieFactory.getMovie("cartoon");
System.out.println(MovieFactory.getMovie("cartoon").getClass().getSimpleName());
break;
case ("thriller"):
MovieFactory.getMovie("thriller");
System.out.println(MovieFactory.getMovie("thriller").getClass().getSimpleName());
break;
case ("soapOpera"):
MovieFactory.getMovie("soapOpera");
System.out.println(MovieFactory.getMovie("soapOpera").getClass().getSimpleName());
break;
default:
System.out.println(MovieFactory.getMovie(key).getClass().getSimpleName());
break;
}
key = scanner.nextLine();
}
/*
8 Создать переменную movie класса Movie и для каждой введенной строки(ключа):
8.1 получить объект используя MovieFactory.getMovie и присвоить его переменной movie
8.2 вывести на экран movie.getClass().getSimpleName()
*/
}
static class MovieFactory {
static Movie getMovie(String key) {
Movie movie = null;
//создание объекта SoapOpera (мыльная опера) для ключа "soapOpera"
if ("soapOpera".equals(key)) {
movie = new SoapOpera();
}
if ("cartoon".equals(key)) {
movie = new Cartoon();
}
if ("thriller".equals(key)) {
movie = new Thriller();
}
return movie;
}
static abstract class Movie {
}
static class SoapOpera extends Movie {
}
}
static class Cartoon extends MovieFactory.Movie {
}
static class Thriller extends MovieFactory.Movie {
}
}