YataNox
객체지향의 5원칙 (SOLID) 본문
1. SOLID
올바른 객체지향 작성을 위해 수립된 원칙이다. 5가지의 원칙으로 구성되며 줄여서 SOLID라고 부른다. 필수는 아니나 적용될 수 록 올바른 객체지향이라고 할 수 있다.
2. 5원칙 종류
- 단일 책임의 원칙(Single Responsibility Principle, SRP)
- 개방 폐쇄의 원칙(Open Closed Principle, OCP)
- 리스코프 치환의 원칙(Liskov Substitution Principle, LSP)
- 인터페이스 분리의 원칙(Interface Segregation Principle, ISP)
- 의존성 역전 원칙(Dependency Inversion Principle, DIP)
3. 단일 책임의 원칙
단일 책임 원칙이란 하나의 객체는 단 하나의 역할 책임만 갖는다는 의미이다. 모듈화가 잘 진행되지 못한 객체는 다른 객체에 대한 의존성이, 즉 결합도가 높아진다. 이는 은닉도에 영향을 줄 수 있으며 해당 객체에 무분별하게 접근이 될 여지가 있다. 객체가 가진 역할이 많을 수 록 해당 객체의 대한 의존성이 올라간다. 단일 책임의 원칙은 특정 객체의 의존성 과중을 최대한 지양한다.
4. 개방 폐쇄의 원칙
개방 폐쇄의 원칙이란 확장에는 열려있고 수정에는 닫혀있다는 의미이다. 사실 수정이 불가능한데 확장이 가능하다는 말은 말이 안되는 소리이다. 그러나 최대한 융통성 있게 생각해보면 기존의 코드는 변경하지 않고 기능을 추가할 수 있도록 설계가 되어있어야 한다는 의미를 가진다.
5. 리스코프 치환의 원칙
리스코프 치환의 원칙은 서브 타입은 언제나 기반 타입으로 교체할 수 있어야 한다는 것을 의미한다. 즉 자식 클래스가 어느 시점에서든 부모 클래스의 위치를 대체할 수 있어야한다는 것이다. 부모의 책임과 역할을 무시, 재정의하지않고 확장만 수행하도록 설계가 되어 있어야한다.
6. 인터페이스 분리의 원칙
인터페이스 분리의 원칙은 범용적인 인터페이스 보다는 클라이언트(사용자)가 실제로 사용하는 Interface를 만들어야 한다는 의미로, 인터페이스를 사용에 맞게 끔 각기 분리해야한다는 것을 의미한다. 쉽게 얘기하자면 자신이 사용하지 않을 범위의 인터페이스는 사용하지 않고, 하나의 큰 인터페이스보다는 구체적인 여러개의 인터페이스를 설계하는게 좋다는 의미이다.
7. 의존성 역전 원칙
의존성 역전의 원칙은 의존 관계를 맺어야할 때 변화하기 쉬운 것보다 고정적인 것에 의존하라는 의미이다. 쉽게 얘기하면 한 Class를 참조할 때 그 Class 자체를 참조하는 것보다 그 상위의 Interface나 추상 메소드 같은 상위 요소를 참조하라는 의미이다. 객체들은 서로 상호작용할 때 의존 관계가 형성되는데 이 때 서로의 추상성이 높은 상위 요소와 교류하라는 의미이다.
--참조
https://blog.itcode.dev/posts/2021/08/13/single-responsibility-principle
[OOP] 객체지향 5원칙(SOLID) - 단일 책임 원칙 (Single Responsibility Principle) - 𝝅번째 알파카의 개발 낙
올바른 객체지향 설계를 위해 수립한 원칙이 있으며, 이 다섯 가지 원칙을 통틀어 객체지향 5원칙(SOLID)이라 명명한다. 필수로 적용하지는 않지만, 적어도 이 규칙을 준수하면 준수할 수록 올바
blog.itcode.dev
-
'CS' 카테고리의 다른 글
프레임워크 vs 라이브러리 (0) | 2024.03.18 |
---|---|
라이브러리와 프레임워크의 차이 (0) | 2023.09.12 |
단일 장애 지점(Single Point Of Failure) (0) | 2023.09.12 |
Separation of concerns (관심사의 분리) (0) | 2023.09.12 |
객체지향 프로그래밍 패러다임과 함수형 프로그래밍 패러다임 (0) | 2023.09.12 |