Home > CS > 2024 > πŸ’Ύ [CS] λ…ΈμΆœ λͺ¨λ“ˆ νŒ¨ν„΄(revealing module pattern)

πŸ’Ύ [CS] λ…ΈμΆœ λͺ¨λ“ˆ νŒ¨ν„΄(revealing module pattern)
CS

πŸ’Ύ [CS] λ…ΈμΆœ λͺ¨λ“ˆ νŒ¨ν„΄(revealing module pattern).

1️⃣ λ…ΈμΆœ λͺ¨λ“ˆ νŒ¨ν„΄(revealing module pattern).

  • μžλ°”μ—μ„œ λ…ΈμΆœ λͺ¨λ“ˆ νŒ¨ν„΄(revealing module patter)은 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ˜ λͺ¨λ“ˆν™” κ°œλ…μ„ μ‚¬μš©ν•˜μ—¬ λ‚΄λΆ€ κ΅¬ν˜„ 세뢀사항을 숨기고, 외뢀에 ν•„μš”ν•œ λΆ€λΆ„λ§Œ λ…ΈμΆœν•˜λŠ” λ””μžμΈ νŒ¨ν„΄μž…λ‹ˆλ‹€.
    • 이 νŒ¨ν„΄μ€ 주둜 μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ 많이 μ‚¬μš©λ˜μ§€λ§Œ, μžλ°”μ—μ„œλ„ μœ μ‚¬ν•œ λ°©μ‹μœΌλ‘œ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

2️⃣ 핡심 κ°œλ….

  • 정보 은닉.
    • λ‚΄λΆ€ λ°μ΄ν„°λ‚˜ λ©”μ„œλ“œλ₯Ό 외뢀에 λ…ΈμΆœν•˜μ§€ μ•Šκ³ , κΌ­ ν•„μš”ν•œ λΆ€λΆ„λ§Œ λ…ΈμΆœν•˜μ—¬ 객체의 μΊ‘μŠν™”λ₯Ό μœ μ§€ν•©λ‹ˆλ‹€.
  • μ™ΈλΆ€ λ…ΈμΆœ μ œμ–΄.
    • μ™ΈλΆ€μ—μ„œ μ ‘κ·Όν•  수 μžˆλŠ” λ©”μ„œλ“œμ™€ λ‚΄λΆ€μ μœΌλ‘œλ§Œ μ‚¬μš©λ˜λŠ” λ©”μ„œλ“œλ₯Ό κ΅¬λΆ„ν•˜μ—¬, λ‚΄λΆ€ κ΅¬ν˜„μ˜ 변경이 μ™ΈλΆ€ μ½”λ“œμ— 영ν–₯을 λ―ΈμΉ˜μ§€ μ•Šλ„λ‘ ν•©λ‹ˆλ‹€.

3️⃣ μžλ°”μ—μ„œμ˜ κ΅¬ν˜„ μ˜ˆμ‹œ.

public RevealingModule {
    
    // private ν•„λ“œ
    private String hiddenData = "This is hidden";
    
    // μ™ΈλΆ€μ—μ„œ μ ‘κ·Όν•  수 μ—†λŠ” λ©”μ„œλ“œ
    private void hiddenMethod() {
        System.out.println("This method is hidden");
    }
    
    // 외뢀에 λ…ΈμΆœν•  λ©”μ„œλ“œ
    public void showData() {
        System.out.println("Exposed Data: " + hiddenData);
    }
    
    // μ™ΈλΆ€μ—μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ μˆ¨κ²¨μ§„ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜λŠ” λ©”μ„œλ“œ
    public void callHiddenMethod() {
        hiddenMethod(); // μ™ΈλΆ€μ—μ„œ μ ‘κ·Ό λΆˆκ°€λŠ₯ν•œ λ©”μ„œλ“œλ₯Ό λ‚΄λΆ€μ μœΌλ‘œ 호좜
    }
}

μ„€λͺ….

    1. hiddenData 와 hiddenMethod λŠ” 외뢀에 λ…ΈμΆœλ˜μ§€ μ•ŠλŠ” ν•„λ“œμ™€ λ©”μ„œλ“œμž…λ‹ˆλ‹€.
      • μ΄λŠ” 클래슀 λ‚΄λΆ€μ—μ„œλ§Œ μ‚¬μš©λ˜λ©° μ™ΈλΆ€ κ°μ²΄λŠ” μ ‘κ·Όν•  수 μ—†μŠ΅λ‹ˆλ‹€.
    1. showData 와 callHiddenMethod λŠ” 외뢀에 λ…ΈμΆœλ˜λŠ” λ©”μ„œλ“œλ‘œ, 이 λ©”μ„œλ“œλ₯Ό 톡해 μ™ΈλΆ€μ—μ„œ λ‚΄λΆ€μ˜ 일뢀 λ°μ΄ν„°λ‚˜ λ©”μ„œλ“œμ— μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μž₯점.

  • μΊ‘μŠν™” κ°•ν™”.
    • μ™ΈλΆ€μ—μ„œ λΆˆν•„μš”ν•œ λ‚΄λΆ€ ꡬ쑰에 μ ‘κ·Όν•  수 없도둝 ν•˜μ—¬ λ³΄μ•ˆμ„±μ€ λ†’μž…λ‹ˆλ‹€.
  • μ½”λ“œ μœ μ§€λ³΄μˆ˜μ„±.
    • λ‚΄λΆ€ κ΅¬ν˜„μ„ λ³€κ²½ν•˜λ”λΌλ„ μ™ΈλΆ€ μΈν„°νŽ˜μ΄μŠ€κ°€ μΌμ •ν•˜λ©΄, μ™ΈλΆ€ μ½”λ“œμ— 영ν–₯을 λ―ΈμΉ˜μ§€ μ•Šκ³  μœ μ—°ν•˜κ²Œ μˆ˜μ • κ°€λŠ₯ν•©λ‹ˆλ‹€.

  • 이 νŒ¨ν„΄μ„ 톡해 μžλ°”μ—μ„œλ„ λͺ¨λ“ˆκ°„μ˜ λͺ…ν™•ν•œ 경계λ₯Ό μ„€μ •ν•˜κ³ , μœ μ§€λ³΄μˆ˜μ„±μ„ λ†’μ΄λŠ” μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.