package com.javarush.test.level15.lesson12.home04;
/* Закрепляем Singleton pattern
1. Найти в гугле пример для - Singleton pattern Lazy initialization.
2. По образу и подобию в отдельных файлах создать три синглтон класса Sun, Moon, Earth.
3. Реализовать интерфейс Planet для классов Sun, Moon, Earth.
4. В статическом блоке класса Solution вызвать метод readKeyFromConsoleAndInitPlanet.
5. Реализовать функционал метода readKeyFromConsoleAndInitPlanet:
5.1. С консоли считать один параметр типа String.
5.2. Если параметр равен одной из констант интерфейса Planet, то создать соответствующий объект и присвоить его Planet thePlanet, иначе обнулить Planet thePlanet.
5.3. Сравнивать введенный параметр можно только с константами из Planet, нельзя создавать свои строки.
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Solution {
public static Planet thePlanet;
static
{
try
{
readKeyFromConsoleAndInitPlanet();
}
catch (IOException e)
{
e.printStackTrace();
}
}
//add static block here - добавьте статический блок тут
public static void readKeyFromConsoleAndInitPlanet() throws IOException
{
// implement step #5 here - реализуйте задание №5 тут
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String x = reader.readLine();
if (x.equals(Planet.SUN))
{
thePlanet = (Planet) Sun.getInstance();
}
else if (x.equals(Planet.MOON))
{
thePlanet = (Planet) Moon.getInstance();
}
else if (x.equals(Planet.EARTH)) thePlanet = (Planet) Earth.getInstance();
else thePlanet = null;
}
}
package com.javarush.test.level15.lesson12.home04;
public class Moon implements Planet {
private static Moon instance;
private Moon(){}
public static Moon getInstance(){
if(instance == null){
instance = new Moon();
}
return instance;
}
}
package com.javarush.test.level15.lesson12.home04;
public class Earth implements Planet {
private static Earth instance;
private Earth(){}
public static Earth getInstance(){
if(instance == null){
instance = new Earth();
}
return instance;
}
}
package com.javarush.test.level15.lesson12.home04;
public class Sun implements Planet {
private static Sun instance;
private Sun(){}
public static Sun getInstance(){
if(instance == null){
instance = new Sun();
}
return instance;
}
}
package com.javarush.test.level15.lesson12.home04;
public interface Planet {
static String SUN = "sun";
static String MOON = "moon";
static String EARTH = "earth";
}
Leave A Comment