CodeGym /ื‘ืœื•ื’ Java /Random-HE /ื“ืคื•ืกื™ื ื•ืกื™ื ื’ืœื˜ื•ืŸ ื‘ื’'ืื•ื•ื”
John Squirrels
ืจึธืžึธื”
San Francisco

ื“ืคื•ืกื™ื ื•ืกื™ื ื’ืœื˜ื•ืŸ ื‘ื’'ืื•ื•ื”

ืคื•ืจืกื ื‘ืงื‘ื•ืฆื”
ืžืืžืจ ื–ื” ืคื•ื ื” ืœื›ืœ ืžื™ ืฉื ืชืงืœ ื‘ืคืขื ื”ืจืืฉื•ื ื” ื‘ืžื•ืฉื’ ื“ืคื•ืกื™ ืขื™ืฆื•ื‘, ืฉืžืข ืืช ื”ืžื•ืฉื’ singleton ืื• ื™ื™ืฉื ืื™ื›ืฉื”ื• ืืช ื“ืคื•ืก ื”ืกื™ื ื’ืœื˜ื•ืŸ ืื‘ืœ ืœื ื”ื‘ื™ืŸ ืžื” ืงื•ืจื”. ื‘ืจื•ืš ื”ื‘ื! ืชืœืžื™ื“ื™ CodeGym ื ืชืงืœื™ื ื‘ื“ืคื•ืกื™ ืขื™ืฆื•ื‘ ื‘ืคืขื ื”ืจืืฉื•ื ื” ื‘ืจืžื” 15, ื›ืืฉืจ ื”ืงืคื˜ืŸ ืžื‘ืงืฉ ืžื”ื ื‘ืžืคืชื™ืข "ืœื—ื–ืง" ืืช ื”ื‘ื ืชื ืขืœ ื™ื“ื™ ื™ื™ืฉื•ื ื“ืคื•ืก Java Singleton ืขื ื™ื™ืฉื•ื ืขืฆืœืŸ. ืœืกื˜ื•ื“ื ื˜ื™ื ืฉืฉื•ืžืขื™ื ืขืœ ื“ืคื•ืก ื”ืกื™ื ื’ืœื˜ื•ืŸ ื‘ืคืขื ื”ืจืืฉื•ื ื” ื™ืฉ ื”ืจื‘ื” ืฉืืœื•ืช: ืžื” ื–ื” ื‘ื›ืœืœ ื“ืคื•ืก ืขื™ืฆื•ื‘ื™? ืœืžื” ืื ื—ื ื• ืฆืจื™ื›ื™ื ืืช ื–ื”? ืžื” ื–ื” ืกื™ื ื’ืœื˜ื•ืŸ ? ื•ืœื‘ืกื•ืฃ, ืžื”ื• ื™ื™ืฉื•ื ืขืฆืœืŸ? ื‘ื•ืื• ื ืขื ื” ืขืœ ื”ืฉืืœื•ืช ื”ืืœื” ืœืคื™ ื”ืกื“ืจ.

ืžื” ื–ื” ื‘ื›ืœืœ ื“ืคื•ืก ืขื™ืฆื•ื‘ื™?

ืื ื™ ืžืืžื™ืŸ ืฉืžืขื˜ ื”ื™ืกื˜ื•ืจื™ื” ื ื•ืขื“ื” ืœืขื ื•ืช ืขืœ ืฉืืœื” ื–ื• ื‘ื”ื‘ื ื” ื”ื˜ื•ื‘ื” ื‘ื™ื•ืชืจ. ื™ืฉื ื ืืจื‘ืขื” ืžื—ื‘ืจื™ ืชื›ื ื•ืช ืžืคื•ืจืกืžื™ื (ืืจื™ืš ื’ืžื, ื’'ื•ืŸ ื•ืœื™ืกื™ื™ื“ืก, ืจืืœืฃ ื’'ื•ื ืกื•ืŸ ื•ืจื™ืฆ'ืจื“ ื”ืœื) ืฉื”ืขืœื• ืจืขื™ื•ืŸ ืžืขื ื™ื™ืŸ. ื”ื ืฉืžื• ืœื‘ ืฉืœืขืชื™ื ืงืจื•ื‘ื•ืช ืคื™ืชื•ื— ืชื•ื›ื ื” ืžื—ื™ื™ื‘ ืื•ืชื ืœืคืชื•ืจ ืืช ืื•ืชืŸ ื‘ืขื™ื•ืช ื‘ืขืจืš ื•ืœื›ืชื•ื‘ ืงื•ื“ ืžื•ื‘ื ื” ื‘ืื•ืชื• ืื•ืคืŸ. ืื– ื”ื ื”ื—ืœื™ื˜ื• ืœืชืืจ ื“ืคื•ืกื™ื ื˜ื™ืคื•ืกื™ื™ื ืฉืœืขื™ืชื™ื ืงืจื•ื‘ื•ืช ืฆืจื™ืš ืœื”ืฉืชืžืฉ ื‘ื”ื ื‘ืชื›ื ื•ืช ืžื•ื ื—ื” ืขืฆืžื™ื. ืกืคืจื ืคื•ืจืกื ื‘ืฉื ืช 1994 ืชื—ืช ื”ื›ื•ืชืจืช Design Patterns: Elements of Reusable Object-Oriented Software. ื”ืฉื ืฉืœ ื”ืกืคืจ ื”ืชื‘ืจืจ ื›ืืจื•ืš ืžื“ื™ ื•ืื ืฉื™ื ื”ืชื—ื™ืœื• ืœืงืจื•ื ืœื• ืคืฉื•ื˜ ื”ืกืคืจ ืฉืœ ื›ื ื•ืคื™ื™ืช ื”ืืจื‘ืขื”. ื”ืžื”ื“ื•ืจื” ื”ืจืืฉื•ื ื” ื›ืœืœื” 23 ื“ืคื•ืกื™ื. ืœืื—ืจ ืžื›ืŸ, ื”ืชื’ืœื• ืขืฉืจื•ืช ื“ืคื•ืกื™ื ืื—ืจื™ื. ืื– ื”ื‘ื” ื ืกื›ื ืืช ื”ืชืฉื•ื‘ื” ืœืฉืืœื” ืฉืœ ื”ืคืกืงื” ื”ื–ื• (ืžื”ืŸ ื‘ื›ืœืœ ื“ืคื•ืกื™ ืขื™ืฆื•ื‘?) ื‘ื›ืžื” ืžื™ืœื™ื:
ืชื‘ื ื™ืช ืขื™ืฆื•ื‘ ื”ื™ื ืคืชืจื•ืŸ ืกื˜ื ื“ืจื˜ื™ ืœื‘ืขื™ื” ื ืคื•ืฆื”.
ื•ื“ืคื•ืก ื”ืกื™ื ื’ืœื˜ื•ืŸ ื”ื•ื ืจืง ืื—ื“ ืžื”ื.

ืœืžื” ืื ื—ื ื• ืฆืจื™ื›ื™ื ื“ืคื•ืกื™ ืขื™ืฆื•ื‘?

ืืชื” ื™ื›ื•ืœ ืœืชื›ื ืช ื‘ืœื™ ืœื“ืขืช ื“ืคื•ืกื™ื: ืื—ืจื™ ื”ื›ืœ, ืขื“ ืจืžื” 15, ื›ื‘ืจ ื›ืชื‘ืช ืžืื•ืช ืžื™ื ื™ ืชื•ื›ื ื™ื•ืช ื‘-CodeGym ื‘ืœื™ ืœื“ืขืช ื‘ื›ืœืœ ืฉื”ืŸ ืงื™ื™ืžื•ืช. ื–ื” ืžืฆื‘ื™ืข ืขืœ ื›ืš ืฉื“ืคื•ืกื™ ืขื™ืฆื•ื‘ ื”ื ืกื•ื’ ืฉืœ ื›ืœื™ ืฉื”ืฉื™ืžื•ืฉ ื‘ื• ืžื‘ื“ื™ืœ ืืช ื”ืžืืกื˜ืจ ืžื”ื—ื•ื‘ื‘: ื“ืคื•ืกื™ ืขื™ืฆื•ื‘ ืžืชืืจื™ื ื›ื™ืฆื“ ืœืคืชื•ืจ ื‘ืขื™ื” ื˜ื™ืคื•ืกื™ืช ื‘ืฆื•ืจื” ื ื›ื•ื ื”. ื”ืžืฉืžืขื•ืช ื”ื™ื ืฉื”ื›ืจืช ื“ืคื•ืกื™ื ื—ื•ืกื›ืช ืœืš ื–ืžืŸ. ื‘ื“ืจืš ื–ื•, ื”ื ื“ื•ืžื™ื ืœืืœื’ื•ืจื™ืชืžื™ื. ืœื“ื•ื’ืžื”, ืืชื” ื™ื›ื•ืœ ืœื™ืฆื•ืจ ืืœื’ื•ืจื™ืชื ืžื™ื•ืŸ ืžืฉืœืš ืขื ื‘ืœืืง ื’'ืง ื•ืžืกืคืจื™ื ื•ืœื”ืงื“ื™ืฉ ื–ืžืŸ ืจื‘ ืœื›ืš, ืื• ืฉืืชื” ื™ื›ื•ืœ ืœื™ื™ืฉื ืื—ื“ ืฉื”ื•ื‘ืŸ ื•ืชื•ืืจ ื‘ืžืฉืš ื–ืžืŸ ืจื‘. ืื•ืชื• ื”ื“ื‘ืจ ื ื›ื•ืŸ ืขื ื“ืคื•ืกื™ ืขื™ืฆื•ื‘. ื‘ื ื•ืกืฃ, ืขื ื“ืคื•ืกื™ ืขื™ืฆื•ื‘, ื”ืงื•ื“ ื”ื•ืคืš ืœืกื˜ื ื“ืจื˜ื™ ื™ื•ืชืจ, ื•ื›ืืฉืจ ืžืฉืชืžืฉื™ื ื‘ื“ืคื•ืก ื”ืžืชืื™ื, ื™ืฉ ืคื—ื•ืช ืกื™ื›ื•ื™ ืฉืชืขืฉื” ื˜ืขื•ื™ื•ืช, ืžื›ื™ื•ื•ืŸ ืฉื”ืžืœื›ื•ื“ื•ืช ื”ื ืคื•ืฆื•ืช ืฉืœ ื”ื“ืคื•ืก ื–ื•ื”ื• ื•ื”ื•ืกืจื• ืœืคื ื™ ื–ืžืŸ ืจื‘. ื‘ื ื•ืกืฃ ืœื›ืœ ื”ืฉืืจ, ื”ื›ืจืช ื“ืคื•ืกื™ื ืขื•ื–ืจืช ืœืžืชื›ื ืชื™ื ืœื”ื‘ื™ืŸ ื–ื” ืืช ื–ื” ื˜ื•ื‘ ื™ื•ืชืจ. ืืชื” ื™ื›ื•ืœ ืคืฉื•ื˜ ืœื•ืžืจ ืืช ืฉื ื”ืชื‘ื ื™ืช ื‘ืžืงื•ื ืœื ืกื•ืช ืœืกืคืง ื”ืกื‘ืจ ืืจื•ืš ืœืขืžื™ืชื™ืš ื”ืžืชื›ื ืชื™ื. ืœืกื™ื›ื•ื, ื“ืคื•ืกื™ ืขื™ืฆื•ื‘ ืขื•ื–ืจื™ื ืœืš:
  • ืœื ืœื”ืžืฆื™ื ืืช ื”ื’ืœื’ืœ ืžื—ื“ืฉ, ืืœื ืœื”ืฉืชืžืฉ ื‘ืคืชืจื•ื ื•ืช ืกื˜ื ื“ืจื˜ื™ื™ื;
  • ืชืงืŸ ืงื•ื“;
  • ืกื˜ื ื“ืจื˜ื™ื–ืฆื™ื” ืฉืœ ื˜ืจืžื™ื ื•ืœื•ื’ื™ื”;
ืœืกื™ื•ื ืกืขื™ืฃ ื–ื”, ื ืฆื™ื™ืŸ ืฉื ื™ืชืŸ ืœื—ืœืง ืืช ื›ืœ ื’ื•ืฃ ื“ืคื•ืกื™ ื”ืขื™ืฆื•ื‘ ืœืฉืœื•ืฉ ืงื‘ื•ืฆื•ืช ื’ื“ื•ืœื•ืช: ื“ืคื•ืกื™ื ื•ืกื™ื ื’ืœื˜ื•ืŸ - ืœื›ืœ ืžื™ ืฉื ืชืงืœ ื‘ื”ื ื‘ืคืขื ื”ืจืืฉื•ื ื” - 2

ืœื‘ืกื•ืฃ, ื“ืคื•ืก ื”ืกื™ื ื’ืœื˜ื•ืŸ

ืกื™ื ื’ืœื˜ื•ืŸ ื”ื•ื ื“ืคื•ืก ื™ืฆื™ืจืชื™ . ื“ืคื•ืก ื–ื” ืžื‘ื˜ื™ื— ืฉื™ืฉ ืจืง ืžื•ืคืข ืื—ื“ ืฉืœ ืžื—ืœืงื” ื•ืžืกืคืง ื ืงื•ื“ืช ื’ื™ืฉื” ื’ืœื•ื‘ืœื™ืช ืœืื•ื‘ื™ื™ืงื˜ ื–ื”. ืžื”ืชื™ืื•ืจ, ืฆืจื™ืš ืœื”ื™ื•ืช ื‘ืจื•ืจ ืฉื™ืฉ ืœื™ื™ืฉื ื“ืคื•ืก ื–ื” ื‘ืฉื ื™ ืžืงืจื™ื:
  1. ื›ืืฉืจ ื”ืชื•ื›ื ื™ืช ืฉืœืš ื“ื•ืจืฉืช ืฉืœื ื™ื™ื•ื•ืฆืจ ื™ื•ืชืจ ืžืื•ื‘ื™ื™ืงื˜ ืื—ื“ ืžืžื—ืœืงื” ืžืกื•ื™ืžืช. ืœื“ื•ื’ืžื”, ืœืžืฉื—ืง ืžื—ืฉื‘ ืขืฉื•ื™ ืœื”ื™ื•ืช ืžื—ืœืงื” Hero ื•ืจืง ืื•ื‘ื™ื™ืงื˜ Hero ืื—ื“ ืฉืžืชืืจ ืืช ื”ื’ื™ื‘ื•ืจ ื”ื™ื—ื™ื“ ื‘ืžืฉื—ืง.

  2. ื›ืืฉืจ ืืชื” ืฆืจื™ืš ืœืกืคืง ื ืงื•ื“ื” ืœื’ื™ืฉื” ื’ืœื•ื‘ืœื™ืช ืœืื•ื‘ื™ื™ืงื˜. ื‘ืžื™ืœื™ื ืื—ืจื•ืช, ืขืœื™ืš ืœื”ืคื•ืš ืืช ื”ืื•ื‘ื™ื™ืงื˜ ืœื–ืžื™ืŸ ืžื›ืœ ืžืงื•ื ื‘ืชื•ื›ื ื™ืช. ืœืžืจื‘ื” ื”ืฆืขืจ, ื–ื” ืœื ืžืกืคื™ืง ืคืฉื•ื˜ ืœื™ืฆื•ืจ ืžืฉืชื ื” ื’ืœื•ื‘ืœื™, ืžื›ื™ื•ื•ืŸ ืฉื”ื•ื ืื™ื ื• ืžื•ื’ืŸ ื›ืชื™ื‘ื”: ื›ืœ ืื—ื“ ื™ื›ื•ืœ ืœืฉื ื•ืช ืืช ืขืจืš ื”ืžืฉืชื ื”, ื›ืš ืฉื ืงื•ื“ืช ื”ื’ื™ืฉื” ื”ื’ืœื•ื‘ืœื™ืช ืฉืœ ื”ืื•ื‘ื™ื™ืงื˜ ืขืœื•ืœื” ืœืœื›ืช ืœืื™ื‘ื•ื“. ืžืืคื™ื™ื ื™ื ืืœื” ืฉืœ Singleton ื ื—ื•ืฆื™ื, ืœืžืฉืœ, ื›ืืฉืจ ื™ืฉ ืœืš ืื•ื‘ื™ื™ืงื˜ ืฉืขื•ื‘ื“ ืขื ืžืกื“ ื ืชื•ื ื™ื, ื•ืืชื” ืฆืจื™ืš ืœื’ืฉืช ืœืžืกื“ ื”ื ืชื•ื ื™ื ืžื—ืœืงื™ื ืฉื•ื ื™ื ืฉืœ ื”ืชื•ื›ื ื™ืช. Singleton ื™ื‘ื˜ื™ื— ืฉืืฃ ืื—ื“ ืœื ื™ื›ืชื•ื‘ ืงื•ื“ ืฉืžื—ืœื™ืฃ ืืช ื”ืžื•ืคืข ืฉื ื•ืฆืจ ืงื•ื“ื ืœื›ืŸ .
ืื– ืกื™ื ื’ืœื˜ื•ืŸ ืกื™ืคืง ืืช ืฉื ื™ ื”ืฆืจื›ื™ื ื”ืืœื”: ื—ื™ื™ื‘ ืœื”ื™ื•ืช ืจืง ืื—ื“ ืžืกื•ื’ ืžืกื•ื™ื ืฉืœ ืื•ื‘ื™ื™ืงื˜ ื‘ืชื•ื›ื ื™ืช ื•ื—ื™ื™ื‘ืช ืœื”ื™ื•ืช ื’ื™ืฉื” ื’ืœื•ื‘ืœื™ืช ืืœื™ื•. ื‘ื“ื•ื’ืžื” ื‘ืจืžื” 15, ื”ืงืคื˜ืŸ ืžื‘ืงืฉ ืžืžืš ืœื™ื™ืฉื ืืช ื”ื“ืคื•ืก ื”ื–ื” ืขื‘ื•ืจ ื”ืžืฉื™ืžื” ื”ื‘ืื”:
  1. ืžืฆื ื“ื•ื’ืžื” ืœืกื™ื ื’ืœื˜ื•ืŸ ืขื ืืชื—ื•ืœ ืขืฆืœืŸ.

  2. ืฆื•ืจ ืฉืœื•ืฉื” ืžื—ืœืงื•ืช ื™ื—ื™ื“ - ืฉืžืฉ, ื™ืจื—, ื›ื“ื•ืจ ื”ืืจืฅ - ื‘ืงื‘ืฆื™ื ื ืคืจื“ื™ื ืชื•ืš ืฉื™ืžื•ืฉ ื‘ืื•ืชื• ืขื™ืงืจื•ืŸ.

  3. ืœื™ื™ืฉืื›ื•ื›ื‘ ืœื›ืชืžืžืฉืง ื‘ื›ื™ืชื•ืช ืฉืžืฉ , ื™ืจื— ื•ื›ื“ื•ืจ ื”ืืจืฅ .

  4. ื‘ื‘ืœื•ืง ืกื˜ื˜ื™ ืฉืœ ื”ืžื—ืœืงื” Solution ืงืจื ืืชreadKeyFromConsoleAndInitPlanetืฉื™ื˜ื”.

  5. ื™ื™ืฉื ืืชreadKeyFromConsoleAndInitPlanetืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื”ืฉื™ื˜ื”:

    • 5.1. ืงืจื ืคืจืžื˜ืจ ืžื—ืจื•ื–ืช ืื—ื“ ืžื”ืžืกื•ืฃ

    • 5.2. ืื ื”ืคืจืžื˜ืจ ืฉื•ื•ื” ืœืื—ื“ ืžื”-ื›ื•ื›ื‘ ืœื›ืชื”ืงื‘ื•ืขื™ื ืฉืœ ื”ืžืžืฉืง, ืฆื•ืจ ืืช ืื•ื‘ื™ื™ืงื˜ ื”-Planet ืžืชืื™ื .

ืœืื—ืจ ืฉืงืจืื ื• ื‘ืงืคื™ื“ื” ืืช ืชื ืื™ ื”ืžืฉื™ืžื”, ืื ื• ื™ื›ื•ืœื™ื ืœืจืื•ืช ื‘ื‘ื™ืจื•ืจ ืžื“ื•ืข ื™ืฉ ืฆื•ืจืš ื‘ืกื™ื ื’ืœื˜ื•ืŸ ื›ืืŸ. ื•ืื›ืŸ, ืื ื• ืžืชื‘ืงืฉื™ื ืœื™ืฆื•ืจ ืžื•ืคืข ืฉืœ ื›ืœ ืื—ืช ืžื”ืžื—ืœืงื•ืช ื”ื‘ืื•ืช: ืฉืžืฉ , ื™ืจื— , ื›ื“ื•ืจ ื”ืืจืฅ . ื”ื’ื™ื•ื ื™ ืœื”ื ื™ื— ืฉืขืœื™ื ื• ืœื™ืฆื•ืจ ืœื ื™ื•ืชืจ ืžืฉืžืฉ/ื™ืจื—/ื›ื“ื•ืจ ื”ืืจืฅ ืื—ื“. ืื—ืจืช, ืื ื—ื ื• ื ืงืœืขื™ื ืœืžืฆื‘ ืื‘ืกื•ืจื“ื™, ืืœื ืื ื›ืžื•ื‘ืŸ ืืชื” ื›ื•ืชื‘ ืืช ื”ื’ืจืกื” ืฉืœืš ืœืžืœื—ืžืช ื”ื›ื•ื›ื‘ื™ื. ื”ื˜ืžืขืช ื“ืคื•ืก ื”ืกื™ื ื’ืœื˜ื•ืŸ ื‘-Java ื‘ืฉืœื•ืฉื” ืฉืœื‘ื™ื ื‘-Java, ืœื ื ื™ืชืŸ ืœื™ื™ืฉื ื”ืชื ื”ื’ื•ืช Singleton ื‘ืืžืฆืขื•ืช ื‘ื ืื™ ืจื’ื™ืœ, ืžื›ื™ื•ื•ืŸ ืฉื‘ื ืื™ ืชืžื™ื“ ืžื—ื–ื™ืจ ืื•ื‘ื™ื™ืงื˜ ื—ื“ืฉ. ืœื›ืŸ, ื›ืœ ื”ื”ื˜ืžืขื•ืช ืฉืœ Singleton ืžืกืชื›ืžืช ื‘ื”ืกืชืจืช ื”ืงื•ื ืกื˜ืจื•ืงื˜ื•ืจ, ื™ืฆื™ืจืช ืฉื™ื˜ื” ืกื˜ื˜ื™ืช ืฆื™ื‘ื•ืจื™ืช ื”ืฉื•ืœื˜ืช ื‘ื—ื™ื™ื• ืฉืœ ืื•ื‘ื™ื™ืงื˜ ื”ืกื™ื ื’ืœื˜ื•ืŸ, ื•"ื”ืฉืžื“ืช" ื›ืœ ื”ืื•ื‘ื™ื™ืงื˜ื™ื ื”ื—ื“ืฉื™ื ืฉื”ื•ืคื™ืขื•. ืื ื ื™ื’ืฉื™ื ืœ- Singleton , ืขืœื™ื• ืœื™ืฆื•ืจ ืื•ื‘ื™ื™ืงื˜ ื—ื“ืฉ (ืื ืื—ื“ ืœื ืงื™ื™ื ื›ื‘ืจ ื‘ืชื•ื›ื ื™ืช), ืื• ืœื”ื—ื–ื™ืจ ืื•ื‘ื™ื™ืงื˜ ืงื™ื™ื. ืœื”ืฉื™ื’ ืืช ื–ื”:
  1. ืืชื” ืฆืจื™ืš ืœืชืช ืœืžื—ืœืงื” ืฉื“ื” ืกื˜ื˜ื™ ืคืจื˜ื™ ื”ืžืื—ืกืŸ ืื•ื‘ื™ื™ืงื˜ ื‘ื•ื“ื“:

    public class LazyInitializedSingleton {
    	private static LazyInitializedSingleton instance; // #1
    }
  2. ื”ืคื•ืš ืืช ื”ื‘ื ืื™ (ื‘ืจื™ืจืช ื”ืžื—ื“ืœ) ืœืคืจื˜ื™. ื”ืžืฉืžืขื•ืช ื”ื™ื ืฉืœื ื ื™ืชืŸ ืœื’ืฉืช ืืœื™ื• ืžื—ื•ืฅ ืœืžื—ืœืงื” ื•ืœื ืชื•ื›ืœ ืœื”ื—ื–ื™ืจ ืื•ื‘ื™ื™ืงื˜ื™ื ื—ื“ืฉื™ื:

    public class LazyInitializedSingleton {
    	private static LazyInitializedSingleton instance;
    private LazyInitializedSingleton(){} // #2
    }
  3. ื”ื›ืจื™ื– ืขืœ ืฉื™ื˜ืช ื™ืฆื™ืจื” ืกื˜ื˜ื™ืช ืฉืชืฉืžืฉ ืœืงื‘ืœืช ื”ืกื™ื ื’ืœื˜ื•ืŸ:

    public class LazyInitializedSingleton {
        private static LazyInitializedSingleton instance;
            private LazyInitializedSingleton() {}
            public static LazyInitializedSingleton getInstance() { // #3
            if (instance == null) { // If the object has not yet been created
                instance = new LazyInitializedSingleton(); // Create a new object
            }
            return instance; // Return the previously created object
        }
    }
ื”ื“ื•ื’ืžื” ืœืขื™ืœ ื”ื™ื ืžืขื˜ ืžื’ื•ืฉืžืช, ืžื›ื™ื•ื•ืŸ ืฉืื ื• ืคืฉื•ื˜ ืžืกืชื™ืจื™ื ืืช ื”ื‘ื ืื™ ื•ืžืกืคืงื™ื ืฉื™ื˜ื” ืžืฉืœื ื• ื‘ืžืงื•ื ื‘ื ืื™ ืกื˜ื ื“ืจื˜ื™. ืžื›ื™ื•ื•ืŸ ืฉืžืืžืจ ื–ื” ื ื•ืขื“ ืœื”ื‘ื˜ื™ื— ืฉืชืœืžื™ื“ื™ CodeGym ื™ื‘ื•ืื• ื‘ืžื’ืข ืขื ื“ืคื•ืก ื–ื” (ื•ื“ืคื•ืกื™ ืขื™ืฆื•ื‘ ื‘ื›ืœืœ), ื”ื ื™ื•ืื ืกื™ื ืฉืœ ื™ื™ืฉื•ืžื™ ื™ื—ื™ื“ ืžื•ืจื›ื‘ื™ื ื™ื•ืชืจ ืœื ื™ืชื•ืืจื• ื›ืืŸ. ื ืฆื™ื™ืŸ ืจืง ื›ื™ ื‘ื”ืชืื ืœืžื•ืจื›ื‘ื•ืช ื”ืชื•ื›ื ื™ืช, ื™ื™ืชื›ืŸ ืฉื™ื”ื™ื” ืฆื•ืจืš ืœืฉื›ืœืœ ืขื•ื“ ื™ื•ืชืจ ื“ืคื•ืก ื–ื”. ืœื“ื•ื’ืžื”, ื‘ืกื‘ื™ื‘ืช ืจื™ื‘ื•ื™ ื—ื•ื˜ื™ื (ืจืื” ืžืืžืจื™ื ืขืœ ืฉืจืฉื•ืจื™ื), ืžืกืคืจ ืฉืจืฉื•ืจื™ื ืฉื•ื ื™ื ืขืฉื•ื™ื™ื ืœื’ืฉืช ืœืฉื™ื˜ืช ื”ืกื™ื ื’ืœื˜ื•ืŸ ื‘ื•-ื–ืžื ื™ืช, ื•ื”ืงื•ื“ ื”ืžืชื•ืืจ ืœืขื™ืœ ื™ืคืกื™ืง ืœืขื‘ื•ื“, ืžื›ื™ื•ื•ืŸ ืฉื›ืœ ืฉืจืฉื•ืจ ื ืคืจื“ ื™ื›ื•ืœ ืœื™ืฆื•ืจ ืžื•ืคืข ืฉืœ ื”ืžื—ืœืงื”. ื›ืชื•ืฆืื” ืžื›ืš, ืขื“ื™ื™ืŸ ืงื™ื™ืžื•ืช ืžืกืคืจ ื’ื™ืฉื•ืช ืฉื•ื ื•ืช ืœื™ืฆื™ืจืช ืกื™ื ื’ืœื•ื ื™ื ืžืชืื™ืžื™ื ืœื‘ื˜ื™ื—ื•ืช ื—ื•ื˜. ืื‘ืœ ื–ื” ื›ื‘ืจ ืกื™ืคื•ืจ ืื—ืจ =)

ื•ืœื‘ืกื•ืฃ... ืžื” ื–ื” ื”ืืชื—ื•ืœ ื”ืขืฆืœ ื”ื–ื” ืฉืขืœื™ื• ืฉืืœ ื”ืงืคื˜ืŸ?

ืืชื—ื•ืœ ืขืฆืœืŸ ื ืงืจื ื’ื ืืชื—ื•ืœ ื“ื—ื•ื™. ื–ื”ื• ื˜ืจื™ืง ืชื›ื ื•ืช ืฉื‘ื• ืคืขื•ืœื” ืขืชื™ืจืช ืžืฉืื‘ื™ื (ื•ื™ืฆื™ืจืช ืื•ื‘ื™ื™ืงื˜ ื”ื™ื ืคืขื•ืœื” ืขืชื™ืจืช ืžืฉืื‘ื™ื) ืžืชื‘ืฆืขืช ืขืœ ืคื™ ื“ืจื™ืฉื” ื•ืœื ืžืจืืฉ. ืื– ืžื” ื‘ืขืฆื ืงื•ืจื” ื‘ืงื•ื“ ื”- Singleton Java ืฉืœื ื•? ื‘ืžื™ืœื™ื ืื—ืจื•ืช, ื”ืื•ื‘ื™ื™ืงื˜ ืฉืœื ื• ื ื•ืฆืจ ื‘ื–ืžืŸ ื”ื’ื™ืฉื” ืืœื™ื•, ืœื ืžืจืืฉ. ืืชื” ืœื ืฆืจื™ืš ืœื”ื ื™ื— ืฉืืชื—ื•ืœ ืขืฆืœืŸ ืงืฉื•ืจ ืื™ื›ืฉื”ื• ื‘ืฆื•ืจื” ื ื•ืงืฉื” ืœืชื‘ื ื™ืช ื”ืกื™ื ื’ืœื˜ื•ืŸ . ืืชื—ื•ืœ ืขืฆืœืŸ ืžืฉืžืฉ ื’ื ื‘ื“ืคื•ืกื™ ืขื™ืฆื•ื‘ ื™ืฆื™ืจืชื™ื™ื ืื—ืจื™ื, ื›ืžื• Proxy ื•-Factory Method, ืื‘ืœ ื–ื” ื’ื ืกื™ืคื•ืจ ืื—ืจ =)
ื”ืขืจื•ืช
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION