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