--- id: wiki-2026-0508-interface-segregation-principle- title: Interface Segregation Principle (ISP) category: 10_Wiki/Topics_Art status: needs_review canonical_id: self aliases: [P-REINFORCE-AUTO-317AB6] duplicate_of: none source_trust_level: A confidence_score: 0.9 tags: [auto-reinforced] raw_sources: [] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - Interface Segregation Principle (ISP)" inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[Interface Segregation Principle (ISP)]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™(Interface Segregation Principle, ISP)์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž์‹ ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋™์ž‘์ด๋‚˜ ์•ก์…˜์— ์˜์กดํ•˜๋„๋ก ๊ฐ•์š”๋ฐ›์•„์„œ๋Š” ์•ˆ ๋œ๋‹ค๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ์›์น™์ž…๋‹ˆ๋‹ค [1, 2]. ์ด ์›์น™์€ ๋ถˆํ•„์š”ํ•œ ๊ธฐ๋Šฅ๊นŒ์ง€ ๋ฌถ์—ฌ ์žˆ๋Š” ๋ฐฉ๋Œ€ํ•œ '๋šฑ๋šฑํ•œ(fat)' ์ธํ„ฐํŽ˜์ด์Šค ๋Œ€์‹ , ๋ชฉ์ ์ด ๋šœ๋ ทํ•˜๊ณ  ์ดˆ์ ์ด ๋งž์ถฐ์ง„(focused) ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค [2]. ์ด๋ฅผ ํ†ตํ•ด ๊ฐ ํด๋ผ์ด์–ธํŠธ๋Š” ์ •ํ™•ํžˆ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์—๋งŒ ์˜์กดํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ์˜ ๋ฌด๊ฒŒ๋ฅผ ์ค„์ด๊ณ  ํ…Œ์ŠคํŠธ ๋ฐ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) - **์ดˆ์ ์ด ๋งž์ถฐ์ง„ ๊ณ„์•ฝ(Focused Contracts)**: ISP๋Š” SOLID ์›์น™์˜ 'I'์— ํ•ด๋‹นํ•˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ธํ„ฐํŽ˜์ด์Šค์— ์˜์กดํ•˜์ง€ ์•Š๋„๋ก ๊ณ„์•ฝ์˜ ๋ฒ”์œ„๋ฅผ ๋ช…ํ™•ํžˆ ์ œํ•œํ•ด์•ผ ํ•จ์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค [1, 2]. - **๋ถ„๋ฆฌ์˜ ์‹ ํ˜ธ(Sign to Split)**: ์ธํ„ฐํŽ˜์ด์Šค์— ํ•˜๋‚˜ ์ด์ƒ์˜ '๋„๋ฉ”์ธ ๋™์‚ฌ(domain verb)'๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋ฉด(์˜ˆ: `play`, `record`, `stream` ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ํฌํ•จํ•œ `MediaPlayer` ์ธํ„ฐํŽ˜์ด์Šค), ์ด๋Š” ํ•ด๋‹น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ถ„๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฐ•๋ ฅํ•œ ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค [2, 3]. - **์œ ์—ฐํ•œ ์กฐํ•ฉ๊ณผ ์˜์กด์„ฑ ์ตœ์†Œํ™”**: ๊ธฐ์กด์˜ ๋ฐฉ๋Œ€ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ `Playable`, `Recordable`, `Streamable`๊ณผ ๊ฐ™์ด ๋ถ„๋ฆฌ๋œ ๋‹จ์œ„๋กœ ์ชผ๊ฐœ๋ฉด, ํด๋ผ์ด์–ธํŠธ๋Š” ํ•„์š”ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์„ ํƒ์ ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3]. ์ด๋Š” ๋ถˆํ•„์š”ํ•œ ์˜์กด์„ฑ(dead weight)์„ ์ œ๊ฑฐํ•˜์—ฌ ํ–ฅํ›„ ์‹œ์Šคํ…œ ์—…๊ทธ๋ ˆ์ด๋“œ์™€ ํ…Œ์ŠคํŠธ ๊ณผ์ •์„ ํฌ๊ฒŒ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค [3]. - **๊ฒฐํ•ฉ๋„ ๊ฐ์†Œ์™€ ํ™•์žฅ์„ฑ ํ™•๋ณด**: ํ•˜๋‚˜์˜ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์ฑ…์ž„์„ ๊ฐ–๊ฒŒ ๋˜๋ฉด ์‹œ์Šคํ…œ์ด ๋ณ€๊ฒฝ์— ์ทจ์•ฝํ•ด์ง‘๋‹ˆ๋‹ค [4]. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ตœ์†Œ ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌํ•˜๊ณ  ์ด๋ฅผ ํ•„์š”ํ•œ ์‹œ์ ์— ์กฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์€ ์‹œ์Šคํ…œ ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ , ์ˆ˜์ •์—๋Š” ๋‹ซํ˜€ ์žˆ๊ณ  ํ™•์žฅ์—๋Š” ์—ด๋ ค ์žˆ๋Š” ๊ฒฌ๊ณ ํ•œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ํ•ต์‹ฌ ์ „๋žต์ด ๋ฉ๋‹ˆ๋‹ค [4]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & Updates) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Design & Experience ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** , [[Single Responsibility Principle (SRP)]], [[Facade Pattern]] - **Contradictions/Notes:** ์†Œ์Šค ๋‚ด์— ISP์— ๋ฐ˜๋Œ€๋˜๋Š” ์ฃผ์žฅ์€ ์—†์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€์ ์ธ ์ฐธ๊ณ  ์‚ฌํ•ญ์œผ๋กœ, ์†Œ์Šค๋Š” ์ธํ„ฐํŽ˜์ด์Šค์— ์—ฌ๋Ÿฌ ๋„๋ฉ”์ธ ๋™์‚ฌ๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ ์ด๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ธฐ์ค€์œผ๋กœ ์‚ผ์œผ๋ผ๊ณ  ์กฐ์–ธํ•ฉ๋‹ˆ๋‹ค [3]. --- *Last updated: 2026-04-18* - Raw Source: [[00_Raw/2026-04-20/Interface Segregation Principle (ISP).md]] --- ## ๐Ÿค– LLM ํ™œ์šฉ ํžŒํŠธ (How to Use This Knowledge) **์–ธ์ œ ์ด ์ง€์‹์„ ์“ฐ๋Š”๊ฐ€:** - *(TODO)* **์–ธ์ œ ์“ฐ๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€:** - *(TODO)* ## ๐Ÿงช ๊ฒ€์ฆ ์ƒํƒœ (Validation) - **์ •๋ณด ์ƒํƒœ:** needs_review - **์ถœ์ฒ˜ ์‹ ๋ขฐ๋„:** A - **๊ฒ€ํ†  ์ด์œ :** *(P-Reinforce Phase 1 ์ž๋™ ์ •๊ทœํ™”. ๋ณธ๋ฌธ ๊ฒ€์ฆ ํ•„์š”.)* ## ๐Ÿงฌ ์ค‘๋ณต ๊ฒ€์‚ฌ (Duplicate Check) - **๊ธฐ์กด ์œ ์‚ฌ ๋ฌธ์„œ:** *(TODO: ์ธ๋ฑ์„œ ํด๋Ÿฌ์Šคํ„ฐ ๋ฆฌํฌํŠธ ์ฐธ์กฐ)* - **์ฒ˜๋ฆฌ ๋ฐฉ์‹:** UPDATE (์ž๋™ ์ •๊ทœํ™”) - **์ฒ˜๋ฆฌ ์ด์œ :** Phase 1 ์ •๊ทœํ™” โ€” ์˜› ํ…œํ”Œ๋ฆฟ/๋ˆ„๋ฝ ํ•„๋“œ ๋ณด๊ฐ•. ## ๐Ÿ•“ ๋ณ€๊ฒฝ ์ด๋ ฅ (Changelog) | ๋‚ ์งœ | ๋ณ€๊ฒฝ ๋‚ด์šฉ | ์ฒ˜๋ฆฌ ๋ฐฉ์‹ | ์‹ ๋ขฐ๋„ | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 ์ •๊ทœํ™” (frontmatter + ํ—ค๋” ํ‘œ์ค€ํ™”) | UPDATE | A | ## ๐Ÿ’ป ์ฝ”๋“œ ํŒจํ„ด (Code Patterns) **ํŒจํ„ด 1:** *(TODO: ์ด ํ”„๋กœ์ ํŠธ ์ปจ๋ฒค์…˜ ๋ฐ˜์˜ํ•œ ๊ตฌ์กฐ ์Šค์ผˆ๋ ˆํ†ค)* ```text # TODO ``` ## ๐Ÿค” ์˜์‚ฌ๊ฒฐ์ • ๊ธฐ์ค€ (Decision Criteria) **์„ ํƒ A๋ฅผ ์จ์•ผ ํ•  ๋•Œ:** - *(TODO)* **์„ ํƒ B๋ฅผ ์จ์•ผ ํ•  ๋•Œ:** - *(TODO)* **๊ธฐ๋ณธ๊ฐ’:** > *(TODO)* ## โŒ ์•ˆํ‹ฐํŒจํ„ด (Anti-Patterns) - **[์•ˆํ‹ฐํŒจํ„ด]:** *(TODO: ๋ฌด์—‡์„ ํ•˜๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€ + ์ด์œ  + ๋Œ€์‹  ๋ฌด์—‡์„)*