안녕하세요.
오늘은 디자인 패턴 중 하나인 SOLID 원칙을 공부한 내용에 대해 블로그를 쓰겠습니다.
SOLID 원칙이란, 객체지향 프로그래밍(OOP)에서 유지보수성과 확장성을 높이기 위해 만들어진 설계 원칙입니다.
SOLID 원칙은 로버스 C. 마틴이라는 사람이 제안했다고 합니다. 각 글자의 의미도 살펴봅시다.
S: 단일책임원칙
O: 개방-폐쇄의 원칙
L: 리스코프 치환 원칙
I: 인터페이스 분리 원칙
D: 의존성 역전 원칙
이제 각 원칙이 무엇을 의미하는지 자세히 알아보겠습니다.
S, 단일책임원칙
의미는 "한 클래스는 오직 하나의 책임을 가져야 한다"입니다.
단일책임원칙을 적용할 경우 코드 이해도가 높아지고 수정범위가 낮아집니다.
O, 개방-폐쇄의 원칙
의미는 "소프트웨어 요소는 확장에는 열려있어야 하고, 변경에는 닫혀있어야 한다"입니다.
즉 기능을 추가할 때 코드를 수정하지 말고 확장으로 해결하자는 의미입니다.
L, 리스코프 치환 원칙
의미는 "자식클래스는 언제나 부모클래스를 대체할 수 있어야 한다"입니다.
부모타입으로 참조했을 때 자식이 문제없이 동작해야 한다는 것입니다.
예를 들어, Bird 클래스를 Penguin이 상속했을 때 Fly()를 호출한다면 에러가 날 것입니다.
이때는 Bird를 FlyBird, NoneFlyBird로 분리하여 Penguin은 NoneFlyBird를 상속해야 합니다.
I, 인터페이스 분리 원칙
의미는 "특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다"입니다.
즉 불필요한 메서드 의존성을 줄여야 한다는 것입니다.
예를 들어 IPerson 인터페이스가 있을 때 해당 인터페이스에 Sleep(), Eat(), Poop()을 다 넣지 말고 ISleep, IEat, IPoop으로 분리한다는 것입니다.
D, 의존성 역전 원칙
의미는 "고수준 모듈은 저수준 모듈에 의지하면 안 되고, 둘 다 추상(인터페이스)에 의존해야 한다"입니다.
구현체가 아니라 추상화에 의존하도록 설계하라는 것입니다.
예를 들어 Person 클래스가 Sword 클래스에 직접 의존하지 말고 IWeapon 인터페이스에 의존하여 Sword, Gun 등 다양한 무기로 교체할 수 있도록 하라는 것입니다.
이렇게 SOLID 원칙을 알아보았습니다.
앞으로 SOLID 원칙을 계속 참고하면서 코드의 유지보수성과 확장성을 높이기 위해 노력해야겠다고 생각했습니다.
감사합니다.
'공부블로그' 카테고리의 다른 글
| [공부 블로그] 유니티 FSM에 대하여 - 2 (0) | 2025.09.13 |
|---|---|
| [공부블로그] 유니티 FSM에 대하여 - 1 (0) | 2025.09.13 |
| [공부 블로그] 유니티 오브젝트 거리 측정하기 & 원리 (0) | 2025.09.04 |
| [공부 블로그] ref와 out의 차이 (2) | 2025.09.01 |
| [C#] 여러가지 반복문 (0) | 2025.03.29 |