[20210611] SOLID

OOD principle인 SOLID에 대해 설명한다.

SOLID

SOLID Robert C. Martin이 고안한 object-oriented design (OOD) principle의 앞글자를 5글자를 따서 만든 문자이다.

Single responsibility Principle

하나의 클래스는 오직 하나의 일을 해야한다.

Open-Closed Principle

객체나 엔티티들은 확장에 열려있고 수정에 닫혀있어야한다. 즉, 클래스 자체를 수정하지 않고 확장 가능해야 한다는 의미이다. 클래스를 수정하지 않고 확장 가능하려면 interface를 구현해야만 한다.

Liskov Substitution Principle

모든 서브 클래스나 파생 클래스는 그들의 기반 혹은 부모 클래스를 대체할 수 있어야 한다.

Interface Segregation Principle

클라이언트는 사용하지 않는 인터페이스를 구현하라 강요받지 않아야 하며, 클라이언트는 사용하지 않는 메소드들에 의존하지 않아야한다. 만약, 인터페이스를 구현함에 있어서 사용하지 않는 메소드가 존재한다면, 해당 인터페이스를 더 작은 단위로 분할 하라는 원칙이다.

Dependency Inversion Principle

엔티티들은 구체화 클래스가 아닌 추상 클래스에 의존해야 한다. 즉, high-level 모듈은 low-level의 모듈에 의존해서는 안되며, 모두 추상화에 의존해야 한다.

이 원칙은 결합력을 약하게 해준다.

high-level 모듈과 low-level 모듈이 추상화에 의존하기 위해서 interface를 만든다. 그리고는 high-level 모듈과 low-level 모듈이 서로를 의존하는 것이 아닌 interface를 의존함으로써 서로에 대한 결합력을 낮춘다.


출처

https://www.digitalocean.com/community/conceptual_articles/s-o-l-i-d-the-first-five-principles-of-object-oriented-design