0. 객체 지향 설계 5원칙 SOLID
- SOLID는 객체 지향 설계 5원칙을 앞 글자를 따서 만든 말이다.
- 소프트웨어의 결합도는 낮추고, 응집도는 높이는 고전 원칙을 객체 지향의 관점에서 재정립한 것이라고 할 수 있다.
● 결합도
모듈(클래스) 간의 상호 의존 정도를 나타낸다.
결합도가 낮으면 모듈 간의 상호 의존성이 줄어들어 객체의 재사용이나 수정, 유지보수가 용이하다
.
● 응집도
하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성을 말한다,
응집도가 높은 모듈은 하나의 책임에 집중하고 독립성이 높아서 재사용이나 기능의 수정, 유지보수가 용이하다.
1. Single Responsibility Principle (단일 책임 원칙)
- 클래스는 단 한개의 책임을 가져야 한다.
- 클래스를 변경하는 이유는 단 하나여야 한다.
- 클래스가 여러 책임을 가지게 되면 그 클래스를 수정해야 하는 이유가 여러 개가 될 수 있으며, 이로 인해 버그의 위험이 증가하게 됩니다.(유지보수 비효율적)
2. Open-Closed Principle (개방-폐쇄 원칙)
- 소프트웨어 요소는 확장에 대해서는 개방적이고, 변경에 대해서는 폐쇄적이어야 한다
- 즉, 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 한다는 원칙입니다.
- 이를 지키지 않으면 instanceof 와 같은 연산자를 사용하거나, 다운 캐스팅 발생
3. Liskov Substitution Principle (리스코프 치환 원칙)
- 부모 클래스와 자식 클래스 사이의 행동이 일관성 있어야 한다는 것을 말합니다.
- 즉, 자식 클래스는 그의 부모 클래스로 대체 가능해야 합니다.
4. Interface Segregation Principle (인터페이스 분리 원칙)
- 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 것을 말합니다.
- 즉, 필요하지 않은 기능에는 의존 관계를 맺지 않아야 합니다.
5. Dependency Inversion Principle (의존관계 역전 원칙)
※ 고수준 모듈은 뭐고, 저수준 모듈은 또 뭘까?
고수준 모듈 : 어떤 의미 있는 단일 기능을 제공하는 모듈 (interface, 추상 클래스)
저수준 모듈 : 고수준 모듈의 기능을 구현하기 위해 필요한 하위 기능의 실제 구현 (메인클래스, 객체)
- 의존관계 역전 원칙이란 "추상화에 의존해야지, 구체화에 의존하면 안 된다" 는 원칙입니다.
- 자신보다 변하기 쉬운 것에 의존하지 않는 것이 DIP의 핵심이다.
'Java > OOP' 카테고리의 다른 글
[OOP] ==과 equals()의 차이점 (0) | 2024.02.03 |
---|---|
[OOP] 업캐스팅(Upcasting), 다운캐스팅(Downcasting) (0) | 2024.01.30 |
[OOP] 가비지 컬렉션(Garbage Collection) - 생성과 소멸 (1) | 2024.01.29 |
[OOP] Call by Value 와 Call by Reference (0) | 2024.01.28 |
[OOP] C2. 자바의 절차적/구조적 프로그래밍 (0) | 2024.01.28 |