"рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕рд╣реА рд╕рд┐рдВрдЧрд▓рдЯрди" рдФрд░
"рдЬреЗрдПрд╡реАрдП рдореЗрдВ рд╕рд┐рдВрдЧрд▓рдЯрди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди" рдФрд░ "рдорд╕реНрддрд┐рд╖реНрдХ рдХреЗ рд╕рд╛рде
рд╕рд┐рдВрдЧреНрд▓рдЯрди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди " рд▓реЗрдЦреЛрдВ рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ рдореИрдВ рд╕рд┐рдВрдЧрд▓рдЯрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдФрд░ рд╕рдорд╛рди рд╡рд┐рдХрд▓реНрдк рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХреВрдВрдЧрд╛, рдЙрди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдХрдИ рдХрдорд┐рдпреЛрдВ рд╕реЗ рд░рд╣рд┐рддред рдЬреЛ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦрд┐рдд рд▓реЗрдЦреЛрдВ рдореЗрдВ рдмрддрд╛рдП рдЧрдП рдереЗред рд▓реЗрдХрд┐рди рдореИрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рдорд╛рдзрд╛рди рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣рдордиреЗ рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рд╣реИред
рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ:
1. рдзрд╛рдЧрд╛ рд╕реБрд░рдХреНрд╖рд╛
2. рд╡рд╕реНрддреБ-рд╕рд┐рдВрдЧрд▓рдЯрди рдХреА рдХреНрд░рдорд┐рдХ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛
3. рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдХ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдирд┐рдпрдВрддреНрд░рдгреАрдпрддрд╛
4. рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдмрд╛рд╣рд░ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛
5. рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЧрд▓рдЯрди рдСрдмреНрдЬреЗрдХреНрдЯ рд░реЗрдлрд░реЗрдВрд╕ рдХреА рдЧреИрд░-рдХреНрд░рдорд┐рдХ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ред
6. "рд▓реЗрдЬрд╝реА" рдСрдмреНрдЬреЗрдХреНрдЯ-рд╕рд┐рдВрдЧреНрд▓рдЯрди рдХрд╛ рдЖрд░рдВрднреАрдХрд░рдг
рд╡рд┐рдХрд▓реНрдк 1 public class Singleton { private static volatile Singleton instance; static { System.out.print("Singleton class Initializator\r\n"); try { InitSingleton(); } catch (Exception e) { System.out.print("Exception occurred\r\n"); } } private static synchronized void InitSingleton() { if (instance == null) instance = new Singleton(); } public Singleton() { System.out.print("Singleton has been initialized\r\n"); } public static Singleton getInstance() { return instance; } }
рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЕрд╡рддрд╛рд░ рдореЗрдВ, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реНрдб рд╡рд┐рдзрд┐ рдХрд╛ рдХреЙрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рддрдерд╛рдХрдерд┐рдд рд╕реНрдЯреИрдЯрд┐рдХ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рд╕реЗ рдЖрддрд╛ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рджрд╕реНрдп рдЪрд░ рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕реА рд╕реНрддрд░ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреНрд░рдордмрджреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП "рдбрд┐рдЬрд╛рдЗрди рджреНрд╡рд╛рд░рд╛"ред "ред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╢реБрд░реБрдЖрддреА рдмреНрд▓реЙрдХ рдХреА рдЖрддреНрдо-рдЕрдиреБрдХреНрд░рдорд┐рдХрддрд╛ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдЖрд╢рд╛ рдорд╣рд╛рди рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕рд┐рдВрдЧреНрд▓рдЯрди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ
рд╡рд╛рд╖реНрдкрд╢реАрд▓ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рд░ рд╕рдВрджрд░реНрдн рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛, рд╡рд┐рднрд┐рдиреНрди рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рд╕реНрдерд┐рд░ рдЪрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реНрдерд┐рд░рддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдФрд░ рд╕рд┐рдВрдЧрд▓рдЯрди рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд╕реНрдерд┐рд░ рддрд░реАрдХреЗ рдиреЗ
рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдП рдЧрдП рд╕рдВрд╢реЛрдзрдХ рдХреЛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рде
рдЪрд▓рддреА рд╣реИред рдПрдХ рдзрд╛рдЧреЗ рдореЗрдВред
рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ рдХреЗ рд╕рдорд╛рди рд╣реИ рдХрд┐ рдпрд╣ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рдПрдХ рд╣реА рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рд╕реЗ, рд▓реЗрдХрд┐рди рдкреНрд░рджрд░реНрд╢рди рдХреА рдЦрд╛рддрд┐рд░ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕реНрдереИрддрд┐рдХ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдПрдХ
рд╡рд╛рд╖реНрдкрд╢реАрд▓ рд╕рдВрд╢реЛрдзрдХ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рд╣реИ, рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрд░рд┐рдПрд╢рди рдХрд╛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рдмреНрд▓реЙрдХ рдХрд░рдиреЗ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред ред рдЙрд╕реА рд╕рдордп,
"рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕рд╣реА рд╕рд┐рдВрдЧрд▓рдЯрди" рд▓реЗрдЦ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд┐рдЪрд╛рд░
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред
рд╡рд┐рдХрд▓реНрдк 2 public class Singleton { private static Singleton instance; private static final Object lock = new Object(); private static boolean isInitialized = false; static { System.out.print("Singleton class Initializator\r\n"); try { synchronized (lock) { if (!isInitialized) if (instance == null) { instance = new Singleton(); isInitialized = true; } } } catch (Exception e) { System.out.print("Exception occurred\r\n"); } } public Singleton() { System.out.print("Singleton has been initialized\r\n"); } public static Singleton getInstance() { return instance; } }