SOLID원칙

0

SRP (Single Responsibility) 단일 책임 원칙

클래스는 단 한개의 책임을 가져야 한다.

클래스를 변경하는 이유는 단 하나여야 한다.

OCP (Open-Closed) 개방-폐쇄 원칙

기존의 코드를 변경하지 않고, 기능을 수정하거나 추가할 수 있도록 설계해야 한다.

객체지향의 가장 큰 장점인 유연성, 재사용성, 유지보수성을 지키기 위함이다.

LSP (Liskov Substitution) 리스코프 치환 원칙

하위 타입 객체는 상위 타입 객체에서 가능한 행위를 수행할 수 있어야 함

ISP (Interface Segregation) 인터페이스 분리 원칙

클라이언트는 자신이 사용하는 메소드에만 의존해야한다.

DIP (Dependenct Inversion) 의존 역전 원칙

의존 관계를 맺을 때, 변하기 쉬운 것 (구체적인 것) 보다는 변하기 어려운 것 (추상적인 것)에 의존
해야 함

SRP 와 ISP 는 객체가 커지는 것을 막아준다. 객체가 단일 책임을 갖도록 하고 클라이언트마다 특화된 인터페이스를 구현하게 함으로써 한 기능의 변경이 다른 곳까지 미치는 영향을 최소화 하고, 이는 기능 추가 및 변경에 용이하도록 만들어 준다.

LSP 와 DIP 는 OCP 를 서포트한다. OCP 는 자주 변화되는 부분을 추상화하고 다형성을 이용함으로써 기능 확장에는 용이하되 기존 코드의 변화에는 보수적이도록 만들어 준다. 여기서 '변화되는 부분을 추상화'할 수 있도록 도와주는 원칙이 DIP 이고, 다형성 구현을 도와주는 원칙이 LSP 인 것이다.

profile
https://www.youtube.com/watch?v=__9qLP846JE

0개의 댓글