SRP : 단일 책임 원칙(Single Responsibility Principle)
"한 클래스는 하나의 책임만 가져야 한다."
중요한 기준은 '변경'이다. 변경이 있을 때 파급효과가 적으면 단일 책임 원칙을 잘 따른 것이라 말할 수있다.
SRP 원칙을 적용하면 다른 클래스들이 서로 영향을 미치는 연쇄작용을 줄일 수 있다. 즉, 응집도는 높이고
결합도는 낮출 수있다. 책임을 적절하게 분배함으로써 코드의 가독성 향상, 유지보수 용이라는 이점을 가질 수.
있다.
OCP : 개방 폐쇄 원칙(Open Closed Pricple)
"소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀 있어야 한다."
이는 요구사항의 변경이나 추가사항이 발생하더라고, 기존 구성요소 수정이 일어나지 말아야하며 쉽게 확장이 가능 하여 재사용할 수 있어야 한다는 뜻이다. OCP를 가능케 하는 중요한 메커니즘은 추상화와 다형성이라고 설명한다.
OCP는 객체 지향의 장점을 극대화하는 아주 중요한 원리이다.
LSP : 리스코프 치환 원칙
"서브타입은 언제나 자신의 기반 타입으로 교체할 수 있어야 한다."
프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
이는 다형성에서 하위 클래스는 인터페이스 규약을 . 다지켜야 한다는 것을 말하며, 다형성을 지원하기 위한
원칙이다. 인터페이스를 구현한 구현체는 믿고 사용하려면 . 이 원칙이 필요하다.
상속을 잘 활용하고 있다면, 이미 LSP는 잘 구현하고 있는 것이다.
ISP : 인터페이스 분리 원칙
"클라이언트는 자신이 사용하지 않는 메소드에 의존 고나계를 맺으면 안 된다."
이는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙이다.
다시말해, 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다는 뜻으로,
하나의 인터페이스를 상속 받기 보다는 인터페이스를 구체적이고 작은 단위들로 분리시켜
꼭 필요한 인터페이스만 상속하자는 의미이다.
SRP가 클래스의 단일책임을 강조했다면 ISP는 인터터페이스의 단일 책임을 강조한다.
DIP : 의존관계 역전 원칙(Dependency Inversion Priceiple)
"추상화된 것은 구체적인 것에 의존하면 안된다. 구체적인 것이 추상화된 것에 의존해야 한다."
구현 클래스에 의존하지 말고 , 인터페이스에 의존하라는 뜻이다.
인터페이스를 적극적으로 활용하라는 의미이다.
상의클래스일 수록, 인터페이스일 수록, 추상 클래스일 수록 변하지 않을 가능성이 크다.
하위 클래스나 구체 클래스가 아닌 . 더추상적인 것에 의존하라는 것이 의존 역전 원칙이다.