loading
본문 바로가기 메뉴 바로가기
ISP - 인터페이스 분리 원칙(Interface Segregation Principle)

1. ISP란?"클라이언트는 자신이 사용하지 않는 메서드에 의존하면 안 된다"즉, 하나의 거대한 인터페이스를 만들어서 모든 기능을 몰아넣지 않는다.클라이언트(사용자)의 관점에 맞춰 필요한 인터페이스만 제공하라는 원칙이다.2. 왜 ISP가 필요한가?❌ Fat Interface(비대한 인터페이스)의 문제클라이언트가 불필요한 메서드까지 강제로 구현하거나 알게 됨구현체가 사용하지 않는 기능에 끌려가서 변화에 민감해짐인터페이스 하나 수정 시, 모든 구현체가 영향받는 변경 전파 문제✅ ISP를 지키면필요한 기능만 알게 되어 의존성 최소화변경이 국소화되고, 코드 유지보수가 쉬워짐인터페이스 별로 역할이 명확해져서 설계가 깔끔해짐❌3. ISP 위반 예시 📌 문제 코드public interface Machine { ..

IT/SOLID 2025. 4. 28. 19:47
LSP - 리스코프 치환 원칙 (Liskov Substitution Principle) : "부모를 대체해도 문제가 없어야 한다"

1. LSP란?리스코프 치환 원칙은 "서브타입은 언제나 자신의 기반 타입(부모 타입)으로 교체할 수 있어야 한다"는 원칙이다. 📌 원칙의 핵심"자식 클래스는 부모 클래스를 대체해도 동작에 문제가 없어야 한다"LSP를 만족하면 클라이언트는 부모 타입(추상 타입)만 보고도 구현체(자식 클래스)에 상관없이 동일한 방식으로 사용할 수 있어야 한다.2. LSP를 이해하는 질문이 자식 클래스는 진짜 is-a 관계인가?부모 클래스를 사용하는 코드에서 자식 클래스를 넣었을 때, 기능이 깨지지 않는가?다형성을 깨지 않고 안전하게 확장할 수 있는가?3. LSP 위반 예시 (고전적인 Rectangle vs Square)public class Rectangle { protected int width; protec..

IT/SOLID 2025. 4. 25. 17:25
OCP - 개방/폐쇄 원칙 (Open/Closed Principle)

1. OCP란?OCP (Open/Closed Principle)"소프트웨어 구성 요소는 확장에는 열려(Open)있고, 변경에는 닫혀(Closed) 있어야 한다." 기능이 확장될 수 있어야 하고기존의 코드는 변경하지 않아야 한다는 객체지향 설계 원칙이다.📌 즉, 새로운 요구사항이 생겨도 기존 코드를 수정하지 않고, 기능 추가만으로 시스템을 확장할 수 있어야 한다는 뜻이다. 2. 왜 OCP가 중요한가? ✅ OCP를 지키면코드 변경 없이 새로운 기능을 추가할 수 있어 유지보수에 강함기존 코드를 건드리지 않으므로 사이드 이펙트가 줄고 테스트가 쉬움기능 추가가 많고, 요구사항이 자주 바뀌는 비즈니스 영역에서 매우 중요❌ OCP를 지키지 않으면기존 클래스에 계속 조건문이나 분기 로직이 추가됨 (if/else 지옥..

IT/SOLID 2025. 4. 24. 15:46
SRP - 단일 책임 원칙 (Single Responsibility Principle)

1. 단일 책임 원칙(SRP)란?"클래스는 단 하나의 책임만 가져야 한다."여기서 말하는 '책임'이란 변경의 이유(Reason to Change)이다.즉, 클래스는 오직 하나의 변경 이유만 가져야 한다는 것이 핵심이다.2. SRP가 필요한 이유 📌 SRP가 지켜지지 않으면?하나의 클래스가 너무 많은 역할을 담당 -> 높은 결합도한 기능이 바뀌면, 관련 없는 기능도 영향을 받음유지보수가 어렵고, 테스트도 어려워짐📌 SRP가 지켜지면?클래스가 하나의 역할만 담당 -> 낮은 결합도, 높은 응집도변경이 국소화되어 예측 가능테스트 단위가 작아지고 명확함❌ 3. SRP 위반 예제public class ReportManager { public void generateReport() { // 1...

IT/SOLID 2025. 4. 21. 19:22
추상화(Abstraction) - 복잡함을 감추고 본질만 드러내는 설계의 미학

1. 추상화란?추상화(Abstraction)는 불필요한 구현 세부사항은 감추고, 핵심적인 개념이나 행위만을 정의하여 표현하는 객체지향 설계 원칙이다.즉, "무엇을 할 수 있는가"에 집중하고, "어떻게 구현할 것인가"는 감춘다는 철학 📌Java에서의 예시List 인터페이스만 알아도 ArrayList나 LinkedList의 구체 구현을 몰라도 사용 할 수 있음이처럼 추상화를 통해 사용과 구현을 분리하고, 유연한 설계를 할 수 있다. 📌 예시로 이해하기"TV 리모컨"은 전원을 켜고 채널을 바꿀 수 있음 (기능 = 추상화된 인터페이스)내부적으로 무슨 회로로 동작하는지는 알 필요 없음 (구현 = 캡슐화)public interface RemoteControl { void powerOn(); void ..

IT/OOP 2025. 4. 16. 21:31
🌀다형성(Polymorphism) - 한 인터페이스, 여러 구현의 힘

1. 다형성이란?다형성(Polymorphism)은 하나의 인터페이스(또는 부모 타입)를 통해 다양한 구현(자식 클래스)의 동작을 수행할 수 있는 객체지향의 핵심 원칙이다. 간단히 말하면 : "같은 메시지를 보냈을 때, 객체가 각자 다른 방식으로 응답하는 능력" 2. 왜 다형성이 중요한가? 📌 유지보수성과 확장성 향상새로운 기능 추가 시 기존 코드 수정 없이 확장 가능 (OCP 원칙 실현)고수준 모듈이 저수준 구현이 아닌 인터페잇에 의존하게 된다 (DIP 원칙 실현)다양한 객체를 하나의 타입으로 다룰 수 있음📌 의존성 분리 (Decoupling)클라이언트 코드는 인터페이스만 알고 구체 구현은 모름 -> 유연한 설계 가능📌 테스트 용이성인터페이스 덕분에 Mock 객체를 쉽게 주입하여 단위 테스트가 가능..

IT/OOP 2025. 4. 15. 18:48
이전 1 ··· 25 26 27 28 29 30 31 ··· 35 다음
이전 다음

소개 및 문의 · 개인정보처리방침 · 면책조항

© 2026 때부자

티스토리툴바

운영자 : 아벡이
제작 : 아로스
Copyrights © 2022 All Rights Reserved by (주)아백.

※ 해당 웹사이트는 정보 전달을 목적으로 운영하고 있으며, 금융 상품 판매 및 중개의 목적이 아닌 정보만 전달합니다. 또한, 어떠한 지적재산권 또한 침해하지 않고 있음을 명시합니다. 조회, 신청 및 다운로드와 같은 편의 서비스에 관한 내용은 관련 처리기관 홈페이지를 참고하시기 바랍니다.