๐ ์ธ๋ถ์์ ์ฌ์ฉํ๊ธฐ ์ํด ์ฝ์๋ ๋ฌธ๋ฒ
- Signature (์ ์ธ๋ฌธ): ํจ์์ ์ด๋ฆ๊ณผ ํ๋ผ๋ฏธํฐ, ๋ฆฌํด๊ฐ, Interface์ ๋ฌธ๋ฒ
- ๋๋ฒ๊น ๊ฐ๋ฅํ ์ต์ ๊ตฌ์ฑ ์๊ฑด
- โค๏ธ Dependency (์์กด์ฑ) Invert (๋ฐ์ ), Break (๋จ์ ) ์ ๊ฐ์ ๊ด๋ฆฌ โก ์ ์ ํ Coupling (๊ฒฐํฉ๋) ์ ์ง
Realization (์ค์ฒดํ) ๊ด๊ณ
๐ Interface (๊ธฐ๋ฅ, ํ์)๋ฅผ ํตํด ๊ทธ๋ฃนํํ ์ ์๋ ๊ด๊ณ
๋ฌธ๋ฒ
Java
Abstract Class (์ถ์ ํด๋์ค)์ฒ๋ผ ์ฐธ์กฐ ๋ณ์๋ก๋ง ํ์ฉ ๊ฐ๋ฅ, ๋ณดํต Interface๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๋์ ์ ํ
interface ์ธํฐํ์ด์ค๋ช { };public static final๋ฉค๋ฒ ๋ณ์, Method Signature๋ง ํฌํจ ๊ฐ๋ฅ
class ํด๋์ค๋ช implements ์ธํฐํ์ด์ค๋ช 1 [, ์ธํฐํ์ด์ค๋ช 2, ...] { };- ๋ค์ค ๊ตฌํ ๊ฐ๋ฅ
#Java8
- ๋ค์ค ๊ตฌํ ๊ฐ๋ฅ
- ๊ธฐ๋ณธ ๋ฉ์๋ (Default Method): Interface ๋ด์์ ๊ธฐ๋ณธ ๊ตฌํ ์ ์ ๊ฐ๋ฅ
default ํจ์์ํ/์ ์;- ๊ธฐ๋ณธ ๋ฉ์๋ ์ถฉ๋: ๋์ผํ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ๊ฐ๋ Interface๋ฅผ ๋ค์ค ๊ตฌํํ ๋, ๊ธฐ๋ณธ ๋ฉ์๋๊ฐ ํ๋ ์ด์์ธ ๊ฒฝ์ฐ
- ์ด๋ฐ ์ํฉ์ ์ ๋ง๋๋ ๊ฒ ์ต์ ์ด์ง๋ง, ๋ถ๊ฐํผํ ๊ฒฝ์ฐ ๋ช ์์ Overriding (์ค๋ฒ๋ผ์ด๋ฉ) ํ์
- โค๏ธ ํด๋์ค ๊ฐ ๊ณ์ธต ๊ตฌ์กฐ์ ๋จ์ํ โก Minimize SW Complexity (SW Crisis)
#CPP
Interface ๋ฌธ๋ฒ ๋ฐ๋ก X โก ์์ ๊ฐ์ ํจ์๋ฅผ ์ธํฐํ์ด์ค๋ก ํ์ฉํด์ผ ํจ