로버트 C. 마틴 제시한 5가지 원칙
물론 다 본인이 만든건 아니라고 한다.
LSP 법칙만 봐도 아니라는 것을 알 수 있다.
개발자라면 무조건 듣게 되는 원칙이라고 생각한다.
나도 많이 들었고 봤다가 잊어버렸다가를 반복하기에 정리하려 한다.
개인적으로는 완전히 이해하고 정리하기 쉽지 않았다.
(지금도 완전히 이해했는지 잘모름)
또 실무에서 상황상 적용하기 힘들 수도 있고
적용한 것이 더 안좋은 경우가 있을 수도 있다.
하지만 알고 적용하지 않는 것과 몰라서 적용하지 못하는 것은 다른 이야기이다.
위키피디아 내용
위키피디아에 써있는 한줄 설명이다.
SRP (Single Reponsibility Principle; 단일 책임 원칙)
한 클래스는 하나의 책임만 가져야 한다.
OCP (Open/Cloesed Priciple; 개방-폐쇄 원칙)
소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀있어야 한다.
LSP (Liskov Substitution Principle; 리스코브 치환 법칙)
프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
ISP (Interface Segregation Principle; 인터페이스 분리 법칙)
특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
DIP (Dependency Inversion Principle; 의존 역전 법칙)
프로그래머는 “추상화에 의존해야지, 구체화에 의존하면 안된다.". DI(의존성 주입) 역시 이 원칙을 따르는 방법 중에 하나이다.
https://ko.wikipedia.org/wiki/SOLID_(%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%EC%84%A4%EA%B3%84)
완벽하게 이해하려고 각각의 원칙들의 위키를 읽다가 더 이해하기 힘들었다.
많은 포스팅을 보고 원칙이 전하려는 의미를 파악하는게 더 쉬울 것이라고 생각한다.
하지만 포스팅들을 보면 이해하는 것도 가지각색이고 아다르고 어다르게 설명하는 경우도 부지기수이다.
최대한 많이 보며 공통의 내용이 무엇인지 파악해보자.
다른 포스팅 잘못된 포스팅들을 보면서 공부하고 생각하다 보면 이 또한 공부가 된다.
'SoftwareDesign' 카테고리의 다른 글
OCP (0) | 2020.03.01 |
---|---|
SRP (0) | 2020.03.01 |
3. Observer (0) | 2020.01.19 |
2. Strategy (0) | 2020.01.07 |
1. Singleton (0) | 2019.12.25 |