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 ๋Š” ์™ธ๋ถ€์— ๋…ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ๋กœ, ์ด ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€์—์„œ ๋‚ด๋ถ€์˜ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋‚˜ ๋ฉ”์„œ๋“œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์žฅ์ .

  • ์บก์Šํ™” ๊ฐ•ํ™”.
    • ์™ธ๋ถ€์—์„œ ๋ถˆํ•„์š”ํ•œ ๋‚ด๋ถ€ ๊ตฌ์กฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋„๋ก ํ•˜์—ฌ ๋ณด์•ˆ์„ฑ์€ ๋†’์ž…๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ ์œ ์ง€๋ณด์ˆ˜์„ฑ.
    • ๋‚ด๋ถ€ ๊ตฌํ˜„์„ ๋ณ€๊ฒฝํ•˜๋”๋ผ๋„ ์™ธ๋ถ€ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ผ์ •ํ•˜๋ฉด, ์™ธ๋ถ€ ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๊ณ  ์œ ์—ฐํ•˜๊ฒŒ ์ˆ˜์ • ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • ์ด ํŒจํ„ด์„ ํ†ตํ•ด ์ž๋ฐ”์—์„œ๋„ ๋ชจ๋“ˆ๊ฐ„์˜ ๋ช…ํ™•ํ•œ ๊ฒฝ๊ณ„๋ฅผ ์„ค์ •ํ•˜๊ณ , ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.