[Java-20] singleton / package

κΉ€μ•„λžŒΒ·2023λ…„ 7μ›” 24일
0

πŸ“Œ 1. λ””μžμΈ νŒ¨ν„΄(Design pattern)

: λ””μžμΈ νŒ¨ν„΄μ΄λž€ κΈ°μ‘΄ ν™˜κ²½ λ‚΄μ—μ„œ 반볡적으둜 μΌμ–΄λ‚˜λŠ” λ¬Έμ œλ“€μ„ μ–΄λ–»κ²Œ ν’€μ–΄λ‚˜κ°ˆ 것인가에 λŒ€ν•œ μΌμ’…μ˜ μ†”λ£¨μ…˜ 같은 것이닀.
β†’ μ„€κ³„μžλ“€μ΄ "μ˜¬λ°”λ₯Έ" 섀계λ₯Ό "빨리" λ§Œλ“€ 수 μžˆλ„λ‘ 도와쀀닀.

γ…‹

πŸ“Œ 2. Singleton νŒ¨ν„΄

: ν”„λ‘œκ·Έλž¨ λ‚΄μ˜ μ—¬λŸ¬ κ³³μ—μ„œ 반볡적으둜 μ‚¬μš©λ˜μ–΄μ•Ό ν•˜λŠ” 객체에 λŒ€ν•΄ 전역적인 λ²”μœ„λ₯Ό 갖도둝 객체λ₯Ό μƒμ„±ν•˜κ³ , 이 객체λ₯Ό μ—¬λŸ¬ κ³³μ—μ„œ κ³΅μœ ν•˜κΈ° μœ„ν•œ 클래슀 μž‘μ„± νŒ¨ν„΄
( μ΄λŸ¬ν•œ νŒ¨ν„΄μ„ 톡해 μƒμ„±λœ 객체λ₯Ό 싱글톀 객체라고 ν•œλ‹€.)

  • Singleton 객체의 이점
    ❢ ν”„λ‘œκ·Έλž¨μ˜ μ „μ—­μ—μ„œ ν™œμš©ν•  재료둜 μ‚¬μš©λ˜λŠ” 곡유 κΈ°λŠ₯을 ν•˜λ‚˜λ§Œ μƒμ„±ν•˜μ—¬ μ—¬λŸ¬ κ³³μ—μ„œ μž¬μ‚¬μš©ν•¨μœΌλ‘œ ν•΄μ„œ λ©”λͺ¨λ¦¬λ₯Ό 효율적으둜 μ‚¬μš©ν•  수 μžˆλ‹€.
    βž‹ 단 ν•œ 번만 객체λ₯Ό μƒμ„±ν•˜λ©΄ λ‹€μ‹œ 객체λ₯Ό 생성할 ν•„μš”κ°€ μ—†κΈ° λ•Œλ¬Έμ—, ν•΄λ‹Ή κΈ°λŠ₯을 μ‚¬μš©ν•  λ•Œλ§ˆλ‹€ 객체λ₯Ό 일일이 생성해야 ν•˜λŠ” λ²ˆκ±°μ›€μ„ ν”Όν•  수 μžˆλ‹€.

γ…‹

πŸ“Œ 3. Package

βž€ java Package

  • νŒ¨ν‚€μ§€ -> ν΄λž˜μŠ€μ— λŒ€ν•œ 묢음 λ‹¨μœ„
  • 클래슀λ₯Ό μš©λ„λ³„μ΄λ‚˜, κΈ°λŠ₯λ³„λ‘œ ꡬ룹화 ν•œ 것을 λ§ν•œλ‹€. μ†ŒμŠ€μ½”λ“œλŠ” ν΄λ”λ‘œ λΆ„λ₯˜λœ ν˜•νƒœλ‘œ μ‘΄μž¬ν•˜κ²Œ λœλ‹€.
  • μ„œλ‘œ λ‹€λ₯Έ νŒ¨ν‚€μ§€μ— 속해 μžˆλ‹€λ©΄ λ‹€λ₯Έ ν΄λž˜μŠ€μ™€ 이름이 λ™μΌν•˜λ”λΌλ„ 좩돌이 λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€.
    (μ„œλ‘œ λ‹€λ₯Έ ν΄λ”μ—λŠ” 이름이 같은 νŒŒμΌλ“€μ΄ μ‘΄μž¬ν•  수 μžˆλ‹€.)

➁ νŒ¨ν‚€μ§€ λͺ…μΉ­

  • νŒ¨ν‚€μ§€ μ΄λ¦„μ˜ 일반적인 μ •μ˜ ν˜•μ‹
    -> νšŒμ‚¬ λ„λ©”μΈμ΄λ¦„μ˜ μ—­μˆœ, ν”„λ‘œμ νŠΈ μ΄λ¦„μ˜ μ†Œλ¬Έμžλ„
    		kr.co.codingbox.myapp.user
    		* νšŒμ›κ°€μž…μ— κ΄€λ ¨λœ *.java
    		kr.co.codingbox.myapp.board
    		* κ²Œμ‹œνŒκ³Ό κ΄€λ ¨λœ *.java

βž‚ λ³΅μ‚¬λœ μ†ŒμŠ€νŒŒμΌ 확인

  • νŒ¨ν‚€μ§€μ— μ†Œμ†λœ 클래슀 νŒŒμΌμ€ 첫 번째 λΌμΈμ—μ„œ μžμ‹ μ΄ μ†Œμ†λœ 클래슀 νŒ¨ν‚€μ§€ 이름을 μ„ μ–Έν•΄μ•Ό ν•œλ‹€.

βžƒ Library

  • ν•œ 개 μ΄μƒμ˜ νŒ¨ν‚€μ§€λ“€μ„ λ°°ν¬ν•˜κΈ° μš©μ΄ν•˜λ„λ‘ μ••μΆ•ν•œ ν˜•νƒœ
  • λ‹€λ₯Έ ν”„λ‘œκ·Έλž¨μ—μ„œ 라이브러리 μ•ˆμ— ν¬ν•¨λœ κΈ°λŠ₯을 ν™œμš©ν•  수 μžˆλ‹€.
  • *.jar

βž„ Java κΈ°λ³Έ APIλ“€

  • μš°λ¦¬κ°€ μ‚¬μš©ν•˜λŠ” JDKμ•ˆμ—λŠ” 이미 μˆ˜λ§Žμ€ λΌμ΄λΈŒλŸ¬λ¦¬κ°€ ν¬ν•¨λ˜μ–΄ 있고,
    이 라이브러리 μ•ˆμ—λŠ” ν”„λ‘œκ·Έλž¨ κ°œλ°œμ— ν•„μš”ν•œ νŒ¨ν‚€μ§€λ“€μ΄ 기본적으둜 ν¬ν•¨λ˜μ–΄ μžˆλ‹€.
  • μžλ°” ν”„λ‘œκ·Έλž˜λ°μ€ μ΄λŸ¬ν•œ λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ˜ κΈ°λŠ₯을 ν™œμš©ν•˜μ—¬ 이루어진닀.
  • μ΄λ ‡κ²Œ ν”„λ‘œκ·Έλž¨ κ°œλ°œμ„ μœ„ν•˜μ—¬ 기본적으둜 μ œκ³΅λ˜λŠ” κΈ°λŠ₯듀을 API라고 ν•œλ‹€.

0개의 λŒ“κΈ€