SOLID
JAVA/์•Œ์•„๋‘๋ฉด ์ข‹์„ ์ง€์‹ 2021. 10. 8. 22:24

SOLID๋ž€? ํด๋ฆฐ์ฝ”๋“œ๋กœ ์œ ๋ช…ํ•œ ๋กœ๋ฒ„ํŠธ ๋งˆํ‹ด์ด ์ข‹์€ ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์˜ 5๊ฐ€์ง€ ์›์น™์„ ์ •๋ฆฌํ•œ ๊ฒƒ์ด๋‹ค. SRP : ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ OCP : ๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™ LSP : ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™ ISP : ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™ DIP : ์˜์กด๊ด€๊ณ„ ์—ญ์ „ ์›์น™ SRP(Single Responsibility Principle) ํ•œ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค. ์ค‘์š”ํ•œ ๊ธฐ์ค€์€ ๋ณ€๊ฒฝ, ๋ณ€๊ฒฝ์ด ์žˆ์„ ๋•Œ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋งŒ ๋ณ€๊ฒฝ๋˜๋ฉด ๊ต‰์žฅํžˆ ์ž˜ ์ง€ํ‚จ ๊ฒƒ์ด๋‹ค. → ํ•˜๋‚˜์˜ ํด๋ž˜์Šค ์•ˆ์— DB, SQL ์ฟผ๋ฆฌ๋ฌธ, View ๋กœ์ง ...... ์œ ์ง€๋ณด์ˆ˜ ์ธก๋ฉด์—์„œ ์ตœ์•…์ด๋‹ค. OCP(Open/closed principle) ์†Œํ”„ํŠธ์›จ์–ด ์š”์†Œ๋Š” ํ™•์žฅ์—๋Š” ์—ด๋ ค ์žˆ์œผ๋‚˜ ๋ณ€๊ฒฝ์—๋Š” ๋‹ซํ˜€ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค์–ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ตฌํ˜„์ฒด..

[JAVA] Comparable vs Comparator
JAVA/Java Programming 2020. 6. 22. 23:40

Comparable ๊ฐœ๋… Comparable์ด๋ž€? Comparable์€ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ปฌ๋ ‰์…˜์„ ์ •๋ ฌํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•˜๊ณ  ์žˆ์Œ Comparable์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค๋Š” ๊ฐ™์€ ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค๋ผ๋ฆฌ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค๋“ค์ž„ Comparable์„ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋“ค์€ ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•จ ํ•„์ˆ˜์ ์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋Š” CompareTo() Comparator ๊ฐœ๋… Comparator๋ž€? Comparable์ด ๊ฐ์ฒด๋ฅผ ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ด์ค€๋‹ค๋ฉด ์–˜๋Š” ์ •๋ ฌ ๊ธฐ์ค€์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ ์ฆ‰, Comparable์—์„œ ๊ตฌํ˜„ํ•œ ๊ธฐ๋ณธ ์ •๋ ฌ๊ธฐ์ค€ ์™ธ์— ๋‹ค๋ฅธ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๊ณ ์žํ•  ๋•Œ ์‚ฌ์šฉํ•จ Ex) ์ด๋ฏธ ๊ตฌํ˜„๋œ ์˜ค๋ฆ„์ฐจ์ˆœ์ด ์•„๋‹Œ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ Comparable, Comparator์„ ์ด์šฉํ•œ Colle..

[JAVA] Wrapper Class
JAVA/์•Œ์•„๋‘๋ฉด ์ข‹์„ ์ง€์‹ 2020. 6. 22. 22:19

Wrapper Class ๊ฐœ๋… Wrapper Class๋ž€? Java์—์„œ๋Š” ๊ธฐ๋ณธํ˜• ๋ณ€์ˆ˜(Primitive Type)์™€ ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜(Reference Type)๊ฐ€ ์กด์žฌํ•จ ๊ทธ๋Ÿฐ๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ๊ธฐ๋ณธํ˜• ๋ณ€์ˆ˜์—๋„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ธฐ๋ณธํ˜• ๋ณ€์ˆ˜๋ฅผ ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Œ ์ด๋•Œ ๊ธฐ๋ณธํ˜• ๋ณ€์ˆ˜๋ฅผ ๊ฐ์ฒด๋กœ ํฌ์žฅํ•ด์ฃผ๋Š” ํด๋ž˜์Šค๋ฅผ Wrapper Class๋ผ๊ณ  ํ•จ Wrapper ํด๋ž˜์Šค๋Š” ์‚ฐ์ˆ  ์—ฐ์‚ฐ์„ ์œ„ํ•ด ์ •์˜๋œ ํด๋ž˜์Šค๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ, ์ธ์Šคํ„ด์Šค์— ์ €์žฅ๋œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Œ ๋‹จ์ง€, ๊ฐ’์„ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค์˜ ๊ฐ’๋งŒ์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Œ Ex) Integer data = new Integer(123); Wrapper Class์˜ ์ข…๋ฅ˜ ๋ฐ•์‹ฑ(Boxing)๊ณผ ์–ธ๋ฐ•์‹ฑ(UnBoxing) ๋ฐ•์‹ฑ๊ณผ ์–ธ..

[JAVA] ์ธํ„ฐํŽ˜์ด์Šค vs ์ถ”์ƒํด๋ž˜์Šค
JAVA/์•Œ์•„๋‘๋ฉด ์ข‹์„ ์ง€์‹ 2020. 4. 12. 22:33

์ถ”์ƒํด๋ž˜์Šค๋ž€? ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋ฅผ ์„ ์–ธํ•˜์—ฌ ์ƒ์†์„ ํ†ตํ•ด์„œ ์ž์† ํด๋ž˜์Šค์—์„œ ์™„์„ฑ์„ ์œ ๋„ํ•˜๋Š” ํด๋ž˜์Šค์ด๋‹ค. ํ•œ ๊ฐœ ์ด์ƒ์˜ ์ถ”์ƒ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€์ง€๋งŒ ๊ตฌํ˜„ ๋œ ๋ฉ”์†Œ๋“œ๋„ ์ •์˜๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ฏธ์™„์„ฑ ์„ค๊ณ„๋„ ์ƒ์†์„ ์œ„ํ•œ ํด๋ž˜์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋‹ค. ์ถ”์ƒ๋ฉ”์†Œ๋“œ๋Š” ์„ ์–ธ๋งŒ๋˜๋ฉฐ ๊ตฌํ˜„๋˜์ง€ ์•Š์€ ๋ถˆ์™„์ „ํ•œ ๋ฉ”์†Œ๋“œ์ด๋ฏ€๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ๋ชปํ•œ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋ž€? ์ƒ์ˆ˜์™€ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ์˜ ์ง‘ํ•ฉ์ด๋‹ค. ์ฆ‰, ๋กœ์ง์„ ์ž‘์„ฑํ•  ์ˆ˜ ์—†๋‹ค. ๊ธฐ๋ณธ ์„ค๊ณ„๋„ ์ผ์ข…์˜ ์ถ”์ƒ ํด๋ž˜์Šค๋กœ, ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ–์ง€๋งŒ ์ถ”์ƒ ํด๋ž˜์Šค๋ณด๋‹ค ์ถ”์ƒํ™” ์ •๋„๊ฐ€ ๋†’๋‹ค. ์ถ”์ƒ ํด๋ž˜์Šค์ฒ˜๋Ÿผ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•˜๋Š”๋ฐ ๋„์›€์„ ์ฃผ๋Š” ๋ชฉ์ ์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค. ๋‹ค์ค‘ ์ƒ์†(๊ตฌํ˜„)์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ƒ์„ฑ์ž๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†์œผ๋ฉฐ ๊ฐ์ฒดํ™”๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์ถ”์ƒํด๋ž˜์Šค ์ธํ„ฐํŽ˜์ด์Šค ์ฐจ์ด์  ์‚ฌ์šฉ์˜๋„ ์ฐจ์ด์  ์ถ”์ƒํด๋ž˜์Šค๋Š” IS ..

[JAVA] ์„ ์–ธ ์œ„์น˜์— ๋”ฐ๋ฅธ ๋ณ€์ˆ˜
JAVA/์•Œ์•„๋‘๋ฉด ์ข‹์„ ์ง€์‹ 2020. 4. 6. 19:41

์„ ์–ธ ์œ„์น˜์— ๋”ฐ๋ฅธ ๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜ 1. ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ ํด๋ž˜์Šค ์˜์—ญ์— ์„ ์–ธ๋˜๋ฉฐ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์‹œ ๋งŒ๋“ค์–ด์ง ๊ฐ ์ธ์Šคํ„ด์Šค๋Š” ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๋ฏ€๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ 2. ํด๋ž˜์Šค ๋ณ€์ˆ˜ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ ์•ž์— static์„ ๋ถ™์ด๋ฉด ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ ํด๋ž˜์Šค์˜ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๋“ค์ด ๊ณต์œ ํ•˜๊ฒŒ ๋จ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์•„๋„ ์–ธ์ œ๋“  ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํด๋ž˜์Šค ๋กœ๋”ฉ์‹œ ์ƒ์„ฑ๋จ public์„ ์•ž์— ๋ถ™์ด๋ฉด ์ „์—ญ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ 3. ์ง€์—ญ ๋ณ€์ˆ˜ ๋ฉ”์„œ๋“œ ๋‚ด์— ์„ ์–ธ๋˜๋ฉฐ, ๋ฉ”์„œ๋“œ๊ฐ€ ์‚ฌ๋ผ์ง€๋ฉด ์†Œ๋ฉธ ๋ธ”๋Ÿญ ๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•จ Reference JAVA์˜ ์ •์„, ๋„์šฐ์ถœํŒ, ๋‚จ๊ถ ์„ฑ ์ง€์Œ