컴퓨터 프로그래밍의 패러다임으로써
프로그램을 명령어의 목록으로 보는 시각에서 벗어나여러 개의 독립된 단위인 객체들의 모임으로 파악하고자하는 것
Single Responsibility Principle (SRP) : 단일 책임 원칙
Open / Closed Principle (OCP) : 개방 / 폐쇄 원칙
확장에는 열려 있으나 변경에는 닫혀 있어야 한다.
cf. 기능을 추가하고자 다형성을 이용하여 클라이언트 코드를 변경하는 경우
Liskov Substitution Principle (LSP) : 리스코프 치환 원칙
프로그램의 객체는 정확성을 깨뜨리지 않으면서 하위 타입의 instance로 바꿀 수 있어야 한다.
EX. 다형성에서 sub-class는 interface 규약을 모두 지켜야 함
Interface Segregation Principle (ISP) : 인터페이스 분리 원칙
Dependency Inversion Principle (DIP) : 의존관계 역전 원칙
프로그래머는 추상화에 의존해야지, 구체화에 의존하면 안된다.
변경되기 쉬운 부분(ex. impl)이 아니라 interface와 같은 변경되기 쉽지 않은 것에 의존하도록
Ex. 구현 클래스가 아닌 인터페이스에 의존해야 함
SOLID와 코드 예시
https://ios-development.tistory.com/705?category=1008271