์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- spring security
- Vue.js
- H2 ์ค์น
- ๊ธฐ์ด100์
- Python
- ๊ฐ์ฌ์ค
- Spring
- golang
- Gradle
- ์ค๋ธ์
- ์๊ณ ๋ฆฌ์ฆ
- Git
- ํด๋ฆฐ์ฝ๋
- Codeup
- ํ์ด์ฌ
- ์คํ๋ง
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- thymeleaf
- Postman
- go
- ๋กฌ๋ณต
- Spring Boot
- JPA
- java
- ํด๋ฆฐ ์ฝ๋
- MySQL
- ์ฝ๋์
- springboot
- mariadb
- GitHub
- Today
- Total
nyximos.log
[Spring] ์ข์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋? ๋ณธ๋ฌธ
๐ค ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋?
์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ๋ช ๋ น์ด์ ๋ชฉ๋ก์ผ๋ก ๋ณด๋ ๊ฒ์ด ์๋๋ผ ์ฌ๋ฌ๊ฐ์ ๋ ๋ฆฝ๋ ๋จ์์ธ ๊ฐ์ฒด๋ค์ ๋ชจ์์ผ๋ก ํ์ ํ๊ณ ์ ํ๋ ๊ฒ
ํ๋ก๊ทธ๋จ์ ์ ์ฐํ๊ณ ๋ณ๊ฒฝ ์ฉ์ดํ๊ฒ ๋ง๋ ๋ค → ๋๊ท๋ชจ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๋ง์ด ์ฌ์ฉ
๐ฎ ๊ฐ์ฒด ์งํฅ ์ธ์ด์ ์ฃผ์ ํน์ง
1. ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ด ๋๋ค.
- ์๋ก์ด ์ฝ๋๋ฅผ ์์ฑํ ๋ ๊ธฐ์กด์ ์ฝ๋๋ฅผ ์ด์ฉํ์ฌ ์ฝ๊ฒ ์์ฑํ ์ ์๋ค.
2. ์ฝ๋์ ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ๋ค.
- ์ฝ๋๊ฐ์ ๊ด๊ณ๋ฅผ ์ด์ฉํด์ ์ ์ ๋ ธ๋ ฅ์ผ๋ก ์ฝ๊ฒ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค.
3. ์ ๋ขฐ์ฑ์ด ๋์ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
- ์ ์ด์์ ๋ฉ์๋๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ๊ณ ์ฌ๋ฐ๋ฅธ ๊ฐ์ ์ ์งํ๋๋ก ํ๋ฉฐ,
์ฝ๋์ ์ค๋ณต์ ์ ๊ฑฐํ์ฌ ์ฝ๋์ ๋ถ์ผ์น๋ก ์ธํ ์ค๋์์ ๋ฐฉ์งํ ์ ์๋ค.
๐จ ์ถ์ํ abstraction
๋ถํ์ํ ์ ๋ณด๋ ์จ๊ธฐ๊ณ ์ค์ํ ์ ๋ณด๋ง ํํ → ํ๋ก๊ทธ๋จ์ ๊ฐ๋จํ ๋ง๋ ๋ค!
์ถ์ํ๋ฅผ ํ์ง ์์ผ๋ฉด? ๊ฐ์ฒด๋ค์ด ๋๋ฌด ๋ณต์กํด์ง๋ค!
๐ ์บก์ํ encapsulation
๋ฐ์ดํฐ์ ์๊ณ ๋ฆฌ์ฆ์ ํ๋๋ก ๋ฌถ๋ ๊ฒ!
๊ฐ์ฒด object๊ฐ ํ๋์ ์บก์
์๋ฐ๋ ๊ทธ๋ํฝ, ๋คํธ์ํฌ, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฑ ๋ง์ ๊ธฐ๋ฅ๋ค์ ๊ฐ์ฒด ํํ๋ก ์ ๊ณตํ๋ค.
์บก์ํ๋ ์ ๋ณด ์๋ information hiding ์ญํ ๋ ํ๋ค.
→ ๊ฐ์ฒด๋ฅผ ์บก์๋ก ์ธ์ ์ค์ ๊ตฌํ ๋ด์ฉ์ ์ธ๋ถ์ ๊ฐ์ถ๊ณ ๋ณดํธ
๋ด๋ถ ๋ฐ์ดํฐ๊ฐ ์จ๊ฒจ์ ธ ์๋ค = ํ๋ก๊ทธ๋จ์ ๋ค๋ฅธ ๋ถ๋ถ์ ์ํฅ์ ๋ผ์น์ง ์๊ณ ๋ณ๊ฒฝ ๋ ์ ์๋ค
๐งฌ ์์ Inheritance
๋ถ๋ชจ ํด๋์ค๋ฅผ ์ด์ด ๋ฐ์ ์๋ก์ด ์์ ํด๋์ค๋ฅผ ์์ฑ!
์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๊ณ ์ฝ๋์ ์ค๋ณต์ ์ ๊ฑฐํ์ฌ ํ๋ก๊ทธ๋จ์ ์์ฐ์ฑ๊ณผ ์ ์ง๋ณด์์ ํฌ๊ฒ ๊ธฐ์ฌํ๋ค.
๐งฉ ๋คํ์ฑ Polymorphism
๊ฐ์ฒด๊ฐ ์ทจํ๋ ๋์์ด ์ํฉ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ ๊ฒ
์๋ก ๋ค๋ฅธ ํ์ ์ ์ํ๋ ๊ฐ์ฒด๋ค์ด ๊ฐ์ ์ด๋ฆ์ ๋ฉค๋ฒ ํจ์์ ์๋ตํด ์๋ก ๋ค๋ฅธ ๋์์ ๋ณด์ฌ์ค
๋คํ์ฑ์ ์ฌ์ฉํ๋ฉด ๋์์ ๋ค๋ฅด๋๋ผ๋ ๊ฐ์ ์์ ์ ํ๋ ๋ฉค๋ฒ ํจ์ ๋ค์๊ฒ ๊ฐ์ ์ด๋ฆ์ ๋ถ์ฌํ ์ ์๋ค → ์ฝ๋ ๊ฐ๋จํด์ง
๐ง ๋คํ์ฑ์ ์ค์ธ๊ณ ๋น์
์ญํ ๊ณผ ๊ตฌํ์ผ๋ก ์ธ์์ ๊ตฌ๋ถํ์!
๊ฐ์ฒด ์ค๊ณ์ ์ญํ ๊ณผ ๊ตฌํ์ ๋ช ํํ ๋ถ๋ฆฌ
์ญํ = ์ธํฐํ์ด์ค
๊ตฌํ = ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค, ๊ตฌํ ๊ฐ์ฒด
- ํด๋ผ์ด์ธํธ๋ ๋์์ ์ญํ (์ธํฐํ์ด์ค)๋ง ์๋ฉด ๋๋ค.
- ํด๋ผ์ด์ธํธ๋ ๊ตฌํ ๋์์ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ๋ชฐ๋ผ๋ ๋๋ค.
- ํด๋ผ์ด์ธํธ๋ ๊ตฌํ ๋์์ ๋ด๋ถ ๊ตฌ์กฐ๊ฐ ๋ณ๊ฒฝ๋์ด๋ ์ํฅ์ ๋ฐ์ง ์๋๋ค.
- ํด๋ผ์ด์ธํธ๋ ๊ตฌํ ๋์ ์์ฒด๋ฅผ ๋ณ๊ฒฝํด๋ ์ํฅ์ ๋ฐ์ง ์๋๋ค.
๐ ๋คํ์ฑ์ ๋ณธ์ง
- ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ฐ์ฒด ์ธ์คํด์ค๋ฅผ ์คํ ์์ ์ ์ ์ฐํ๊ฒ ๋ณ๊ฒฝ ๊ฐ๋ฅ
- ํด๋ผ์ด์ธํธ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ์๋ฒ์ ๊ตฌํ ๊ธฐ๋ฅ์ ์ ์ฐํ๊ฒ ๋ณ๊ฒฝํ ์ ์๋ค.
์ฐธ๊ณ
๋จ๊ถ์ฑ, ์๋ฐ์ ์ ์ ๊ธฐ์ดํธ, ๋์ฐ์ถํ, 2019
์ฒ์ธ๊ตญ, ์ด์์ JAVA๋ ์ฒ์์ด์ง!, INFINITYBOOKS, 2015
์ฒ์ธ๊ตญ,ํ์ํธ, Power JAVA, INFINITYBOOKS, 2016
๊น์ํ, ์คํ๋ง ํต์ฌ ์๋ฆฌ - ๊ธฐ๋ณธํธ https://inf.run/ryWP
'Programming > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] ์ปดํฌ๋ํธ ์ค์บ๊ณผ @Autowired (2) | 2022.01.12 |
---|---|
[Spring] @Configuration, @Bean, ์คํ๋ง ์ปจํ ์ด๋ (2) | 2022.01.12 |
[Spring] IoC, DI, ์ปจํ ์ด๋์ ๋ํด ์์๋ณด์ (0) | 2022.01.11 |
[Spring] ์ข์ ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ 5๊ฐ์ง ์์น SOLID (0) | 2022.01.09 |
[Spring] ์คํ๋ง์ ์ ์ (0) | 2022.01.03 |