Рекомендация от ментора:
Проследи, чтобы getMovie() не вызывался больше раз, чем требуется.
package com.javarush.task.task14.task1414;
import java.io.BufferedReader;
import java.io.InputStreamReader;
/*
MovieFactory
*/
public class Solution {
public static void main(String[] args) throws Exception {
//ввести с консоли несколько ключей (строк), пункт 7
BufferedReader reader =new BufferedReader(new InputStreamReader(System.in));
while (true){
String text=reader.readLine();
if (text.equals("soapOpera")){
MovieFactory.getMovie(text);
System.out.println(MovieFactory.getMovie(text).getClass().getSimpleName());//не могу понять как сделать что бы вывести переменную Movie
}else if(text.equals("cartoon")){
MovieFactory.getMovie(text);
System.out.println(MovieFactory.getMovie(text).getClass().getSimpleName());
}else if(text.equals("thriller")){
MovieFactory.getMovie(text);
System.out.println(MovieFactory.getMovie(text).getClass().getSimpleName());
}else{
MovieFactory.getMovie(text);
break;
}
}
/*
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();
}else if("cartoon".equals(key)){
movie=new Cartoon();
}else if("thriller".equals(key)){
movie=new Thriller();
}
return movie;
}
}
static abstract class Movie {
}
static class SoapOpera extends Movie {
}
public static class Cartoon extends Movie{}
public static class Thriller extends Movie{}
}