Чем отличается вызов метода doWork() с переданными ему аргументами от метода, который предписывает вызвать валидатор?
package com.javarush.task.task14.task1411;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Person person = null;
String key;
while (true){
key = reader.readLine();
if (key.equals("user")){ doWork(new Person.User());}
else
if (key.equals("coder")) {doWork(new Person.Coder());}
else
if (key.equals("loser")) {doWork(new Person.Loser());}
else
if (key.equals("proger")) {doWork(new Person.Proger());}
else break;
}
// {
// switch (key){
// case "user": doWork(new Person.User());
// break;
// case "coder": doWork(new Person.Coder());
// break;
// case "loser": doWork(new Person.Loser());
// break;
// case "proger": doWork(new Person.Proger());
// break;
// default: break;
// }
//
// }
doWork(person); //вызываем doWork
}
public static void doWork(Person person) {
if (person instanceof Person.User) {((Person.User) person).live();}
else
if (person instanceof Person.Coder) {((Person.Coder) person).writeCode();}
else
if (person instanceof Person.Loser) {((Person.Loser) person).doNothing();}
else
if (person instanceof Person.Proger) {((Person.Proger) person).enjoy();}
}
}