객체 지향 설계를 할 때 중요한 SOLID 원칙에 대해 정리해보자
클래스는 하나의 책임만 가져야 한다는 매우 기본적인 원칙이다.
예를 들어 유저 서비스에 대한 클래스라면 유저와 관련된 액션만 해야 한다.
클래스는 확장에는 열려있어야 하고 수정에 대해서는 닫혀 있어야 한다.
클래스의 기존 코드를 변경하지 않고도 기능을 확장
할 수 있어야 한다.
인터페이스나 상속을 통해 이를 해결할 수 있다.
서브타입은 기반이 되는 슈퍼타입을 대체
할 수 있어야 한다는 원칙
자식 클래스는 부모 클래스의 기능을 수정하지 않고도 부모 클래스와 호환되어야 한다.
클래스는 자신이 사용하지 않는 인터페이스의 영향을 받지 않아야 한다.
즉, 해당 클래스에게 무의미한 메소드의 구현을 막자는 의미
인터페이스를 너무 크게 정의하기 보단 필요한 만큼만 정의하고 클래스에게 필요한 인터페이스들을 구현하도록 유도한다.
하위 수준 모듈보다 상위 수준 모듈에 의존해야 한다는 원칙
웹 서버 프레임워크 내에서 많이 나오는 원칙이다.