ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] ๋ฆฌํ”Œ๋ ‰์…˜(Reflection)
    ๐Ÿ’ป IT Study/Knowledge 2022. 5. 25. 23:00

    GoF ๋””์ž์ธ ํŒจํ„ด์— ๋Œ€ํ•œ ๊ฐ•์˜๋ฅผ ๋“ฃ๋‹ค๊ฐ€ ๊ฐ•์‚ฌ๋ถ„๊ป˜์„œ ํ˜๋Ÿฌ์ง€๋‚˜๊ฐ€๋“ฏ์ด ๋ฆฌํ”Œ๋ ‰์…˜์„ ์–ธ๊ธ‰ํ•˜์…จ๋‹ค. 

    ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ ๋ฆฌํ”Œ๋ ‰์…˜์œผ๋กœ ๊นจ๋œจ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. 

    ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ๋ฆฌํ”Œ๋ ‰์…˜์„ ๋Œ€๊ฐ• ์ดํ•ดํ•  ์ˆ˜๋Š” ์žˆ์—ˆ์ง€๋งŒ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ณ  ์‹ถ์—ˆ๋‹ค. 

    ๋‚˜์ค‘์— ๋””์ž์ธ ํŒจํ„ด์— ๋Œ€ํ•ด ๋”ฐ๋กœ ์ •๋ฆฌํ•  ์˜ˆ์ •์ด๋‹ค :-)


    ๋ฆฌํ”Œ๋ ‰์…˜(Reflection)์€ ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค ํƒ€์ž…์„ ์•Œ์ง€ ๋ชปํ•ด๋„ ๊ทธ ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ, ํƒ€์ž…, ๋ณ€์ˆ˜๋“ค์„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ์ž๋ฐ” API(Application Programming Interface)์ด๋‹ค. 

    ์ž๋ฐ”๋Š” ์ปดํŒŒ์ผ ์‹œ์ ์— ํƒ€์ž…์„ ๊ฒฐ์ •ํ•˜๋Š” ์ •์ ์–ธ์–ด์ด๋‹ค. 

    ๊ทธ๋Ÿฌ๋‚˜ ๋™์ ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฆฌํ”Œ๋ ‰์…˜์ด ์‚ฌ์šฉ๋œ๋‹ค. 

    ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์‹œ์ ์—๋Š” ์–ด๋–ค ํƒ€์ž…์˜ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ง€ ๋ชจ๋ฅด๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

    ์ด๋Ÿฐ ๊ฒฝ์šฐ ์‹คํ–‰์‹œ์ ์ธ ๋Ÿฐํƒ€์ž„์— ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํŠน์ • ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค. 

     

    Where is it used?

    ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ IDE์—์„œ ๋™์  ๋ฐ”์ธ๋”ฉ์„ ์ด์šฉํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

    ๋Œ€ํ‘œ์ ์œผ๋กœ๋Š” IDE(Intergrated Development Environment)์˜ ์ž๋™์™„์„ฑ, ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์–ด๋…ธํ…Œ์ด์…˜ ๊ธฐ๋Šฅ์ด๋‹ค. 

     

    EX1 |  IDE  ์ž๋™์™„์„ฑ ๊ธฐ๋Šฅ

    IDE๋กœ ๊ฐœ๋ฐœ ์‹œ ์ž๋™์™„์„ฑ ๊ธฐ๋Šฅ ๋•๋ถ„์— ์šฐ๋ฆฌ๋Š” ํŠน์ • ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋“ค์„ ์†์‰ฝ๊ฒŒ ์ฐพ์•„์„œ ์‚ฌ์šฉํ•œ๋‹ค. 

    Date ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋ฅผ ์ž…๋ ฅ ํ›„ date ๊ฒ€์ƒ‰๋งŒ ํ•ด๋„ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ๋ณด์—ฌ์ง„๋‹ค.

    ์ด๋Š” date ๋ณ€์ˆ˜์˜ ํƒ€์ž…์ด Date ํด๋ž˜์Šค ์ธ๊ฒƒ์„ IDE๊ฐ€ ๋จผ์ € ํ™•์ธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

    ์ด๋ ‡๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ์ด์šฉํ•˜์—ฌ ๋™์ ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. 

     

    EX2 |  ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์–ด๋…ธํ…Œ์ด์…˜

    ์Šคํ”„๋ง์ด ๋ฆฌํ”Œ๋ ‰์…˜์„ ์ด์šฉํ•˜์—ฌ ๋Ÿฐํƒ€์ž„ ์‹œ์— ๊ฐœ๋ฐœ์ž๊ฐ€ ๋“ฑ๋กํ•œ ๋นˆ์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. 

     

    ์„ค๊ณ„ํ•  ๋•Œ๋Š” ์‚ฌ์šฉ๋  ํด๋ž˜์Šค๊ฐ€ ์–ด๋–ค ํƒ€์ž…์ธ์ง€ ๋ชจ๋ฅด์ง€๋งŒ ๋ฆฌํ”Œ๋ ‰์…˜์„ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. 

    ์‹คํ–‰์‹œ์ ์— ํ™•์ธํ•ด์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค. 

     

    How is it possible?

    ์ž๋ฐ” ํด๋ž˜์Šค ํŒŒ์ผ์€ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผ ๋˜์–ด static ์˜์—ญ์— ์œ„์น˜ํ•œ๋‹ค. 

    ๊ทธ๋ ‡๊ธฐ์— ํด๋ž˜์Šค ์ด๋ฆ„๋งŒ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์ด ์˜์—ญ์—์„œ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. 

    * static
    : ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด .java์—์„œ .class ํŒŒ์ผ๋กœ ๋กœ๋“œ ์‹œ ์šฐ์„ ์ ์œผ๋กœ method์˜์—ญ(=static ์˜์—ญ, class์˜์—ญ) ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น.
      > ๋ฉ”๋ชจ๋ฆฌ์— ํ•œ๋ฒˆ ํ• ๋‹น๋˜์–ด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋  ๋•Œ ํ•ด์ œ๋˜๋Š” ๊ฒƒ.

     

    Problem 

    1. ์„ฑ๋Šฅ์ด ๋‚ฎ๋‹ค. 

        ๋ฆฌํ”Œ๋ ‰์…˜์„ ๊ณ„์† ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๊ณ„์† ์ƒ์„ฑํ•˜๊ธฐ

    2. ์ปดํŒŒ์ผ ์‹œ ํ™•์ธํ•˜์ง€ ์•Š๊ณ  ๋Ÿฐํƒ€์ž„ ์‹œ์—๋งŒ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. 

        ์ปดํŒŒ์ผ ์‹œ์ ์— ํƒ€์ž… ๊ฒ€์‚ฌ์™€ ์˜ˆ์™ธ ๊ฒ€์‚ฌ๊ฐ€ ์ฃผ๋Š” ์ด์ ์„ ๋ˆ„๋ฆด ์ˆ˜ ์—†๋‹ค.

        ๋ฆฌํ”Œ๋ ‰์…˜์„ ํ†ตํ•ด ์กด์žฌํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์‹คํ–‰ ๋„์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. 

     

    Conclusion

    ๋ฆฌํ”Œ๋ ‰์…˜์€ ๋ณต์žกํ•œ ํŠน์ˆ˜ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ ์‹œ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์ด๋‹ค. 

    ์ปดํŒŒ์ผ ์‹œ์ ์—๋Š” ํ•ด๋‹น ํด๋ž˜์Šค์˜ ํƒ€์ž…์„ ์•Œ ์ˆ˜ ์—†์„ ๊ฒฝ์šฐ์—๋งŒ ๋ฆฌํ”Œ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. 

    ๊ฐ์ฒด๋Š” ์ด๋ฏธ ์ƒ์„ฑ๋˜์–ด ์žˆ๊ณ  ๊ณ„์† ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ๋ฆฌํ”Œ๋ ‰์…˜์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ถˆํ•„์š”ํ•˜๋‹ค. 

    ๋˜๋„๋ก์ด๋ฉด ๊ฐ์ฒด ์ƒ์„ฑ์—๋งŒ ๋ฆฌํ”Œ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๊ณ ,

    ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•  ๋•Œ๋Š” ์ ์ ˆํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋‚˜ ์ปดํŒŒ์ผ ํƒ€์ž„์— ์•Œ ์ˆ˜ ์žˆ๋Š” ์ƒ์œ„ ํด๋ž˜์Šค๋กœ ํ˜•๋ณ€ํ™˜ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. 


    โ€ป ์ฐธ๊ณ  

     

    ๋Œ“๊ธ€

Designed by Tistory.