SOLID 원칙은 객체지향 설계 5대 원칙이라 불립니다.
SRP (Single Responsiblity Principle)
OCP (Open Closed Principle)
LSP (Liskov Substitution Principle)
ISP (Interface Segregation Principle)
DIP (Dependency Inversion Principle)
단일 책임 원칙
하나의 책임
만 가져야 한다.캡슐화
해야 함을 말한다.SRP 원칙을 만족하면 좋은 이유?
한 클래스가 가진
책임이 많아지면
클래스 내부에서의 강한 결합 이 발생하게 됨.결합도
가 높아지면 유지보수 비용이 증가 하게 되기 때문에 책임을 분리시킬 필요 가 있다.
응집도
가 높고결합도
가 낮은 프로그램을 보통 설계를 잘한 프로그램 이라고 한다.
개방 - 폐쇄 원칙
close
) 기능을 추가할 수(open
) 있도록 설계가 되어야 한다.OCP 원칙을 만족하면 좋은 이유?
변경에 유연 하므로
유지보수 비용
을 줄여주고코드의 가독성
이 높아진다.
리스코프 치환 원칙
자식 클래스
는 언제나 자신의 부모 클래스
를 대체할 수 있다 는 원칙
(부모 클래스가 들어갈 자리에 자식 클래스를 넣어도 잘 작동해야 한다.)
자식 클래스
는 부모 클래스
의 책임을 무시 하거나 재정의
하지 않고 확장
만 수행 하도록 해야한다.
인터페이스 분리 원칙
인터페이스
는 구현하지 말아야 한다.일반적인(범용적인)
인터페이스 보다 여러개의 구체적인
인터페이스 가 좋다.왜 내꺼만 구현해야해?
자신이 사용하지 않는 기능에 영향을 주면 안되기 때문
의존 역전 원칙
의존 관계
를 맺을 때 변화가 많은 것 보다는 변화가 없는 것에 의존
해야 한다.클래스
보다 인터페이스
혹은 추상 클래스
와 의존 관계 를 맺으라는 말변화가 많은 것, 변화가 적은 것?
변화하기 쉬운 것
-> 구체적인 것
->구체화된 클래스
변화가 적은 것(어려운 것)
-> 추상적인 것
->추상 클래스
나인터페이스