코딩항해기
[JAVA] OOP의 5가지 원칙 본문
OOP 5가지 원칙
SOLID 원칙은 객체 지향 설계의 핵심 원칙으로, 소프트웨어의 유지보수성과 확장성을 높이기 위한 지침이다. 단일 책임(SRP), 개방-폐쇄(OCP), 리스코프 치환(LSP), 인터페이스 분리(ISP), 의존성 역전(DIP) 원칙을 통해 더 robust하고 flexible한 코드 구조를 만들 수 있다.
SRP (Single Responsibility Principle, 단일 책임 원칙)
한 클래스는 하나의 책임만을 가져야하며, 클래스는 단 하나의 변경 이유만을 가져야한다. 각 클래스는 하나의 특정 기능에 집중해야하며, 여러 책임을 동시에 지지 않아야 한다는 원칙이다.
OCP (Open/Closed Principle, 개방-폐쇄 원칙)
소프트웨어 엔티티(클래스, 모듈, 함수 등)는 확장에는 열려 있고, 수정에는 닫혀있어야 한다는 원칙이다. 기존 코드를 변경하지 않고도 새로운 기능을 추가할 수 있어야하며, 이는 상속, 추상화, 인터페이스 등을 통해 구현한다.
LSP (Liskov Substitution Principle, 리스코프 치환 원칙)
부모 클래스의 인스턴스를 자식 클래스의 인스턴스로 대체해도 프로그램 동작 문제가 없어야한다는 원칙으로, 상속받은 클래스는 부모 클래스의 행동 규약을 준수해야한다. 이는 상속 관계에서 일관성 있는 행동을 보장한다.
ISP (Interface Segregation Principle, 인터페이스 분리 원칙)
클라이언트는 자신이 사용하지 않는 메서드에 의존하지 않고, 큰 인터페이스를 더 작고 구체적인 인터페이스로 분리해야 한다.
이는 불필요한 의존성을 줄이고 인터페이스를 더 명확하고 간결하게 만든다.
DIP (Dependency Inversion Principle, 의존성 역전 원칙)
상위 모듈은 하위 모듈에 직접 의존해서는 안 되며. 둘 다 추상화에 의존해야 한다.
추상화된 인터페이스나 추상 클래스를 통해 의존성을 역전시킬 수 있다. 구체적인 구현이 아닌 추상화된 개념에 의존함으로써 결합도를 낮추는 원칙이다.
'JAVA' 카테고리의 다른 글
[JAVA] 스택 Stack (0) | 2024.11.19 |
---|---|
[JAVA] 가변인자 (1) | 2024.10.20 |
[JAVA] 날짜 함수 (JAVA 8 이후) (0) | 2024.10.17 |
[JAVA] UUID Universally Unique Identifier (0) | 2024.10.17 |
[JAVA] JavaDoc 주석 (API주석) (0) | 2024.10.13 |