JAVA,객체지향

SRP와 DIP

25G 2021. 11. 26. 11:06

SRP (single Response Principle) 단일 책임원칙

 

객체지향 프로그램에서의 책임

책임 -> 행위(메서드)를 뜻한다.

단일 책임원칙이 필요한 이유는 책임을 단순하게 분리해서 유지보수가 훨씬 수월하도록 설계하는 것이다

 

한 가정에 엄마 아빠 딸이 있다면

엄마 혼자서 요리, 빨래, 청소를 다 하면 빨래에 문제가 생겼을 때 엄마의 코드를 다 수정해야 하는 경우가 발생할 수 있다.

그래서 엄마는 요리만 하고

아빠는 청소만 하고

딸은 빨래만 하도록 설계하는 것이다.

그러면 청소에 문제가 생기면 아빠만 손보면 되는 것이고 빨래에 문제가 생기면 딸만 손보면 되기 때문이다.

이렇게 책임을 분리해서 관리하여서 문제가 생겼을 때 여기저기 책임을 묻는 것이 아닌 해당 문제점이 발생한 곳에만 책임을 물을 수 있도록 설계하는 방식이다.

이렇게 설계하면 유지보수가 훨씬 간단해진다.

 

DIP (Dependency Inversion Principle) 의존성 역전 원칙

2000cc 자동차를 만든다고 가정을 해보자

근데 프로그램에 문제가 생겨서 3000cc 자동차로 2000cc 자동차를 수정해야 한다고 할 때

이때 자동차가 배기량(cc)에 의존하는 것이면 다시 코드를 수정해야 하지만

자동차가 엔진을 의존하고 있다면 코드를 수정할 필요가 없다 new엔진(2000); 이렇게만 수정해주면 됨. 훨씬 유지보수가 간단하다

 

그럼 왜 위와 같은 원칙이 중요할까?

프로그램을 만들 때는 처음부터 완벽하게 만들 수 없기 때문이다.

그래서 항상 프로그램을 만들 때 CI를 고려해야 한다

CI(Continue Integretion) 지속적 통합이 중요하다.

계속적인 업데이트가 돼 야한다는 뜻이다.

만약에 SRP나 DIP 같은 원칙을 지키지 않고 프로그램을 그냥 일기 써 내려가듯이 작성했다고 할 때

나중에 CI를 하기 위해서 프로그램 수정단계에 가면 엄청나게 고생을 할 수밖에 없다는 것이다.

그렇기 때문에 객체지향 프로그래밍에 설계 원칙은 되도록 지켜서 설계해 나가는 것이 좋다. 

'JAVA,객체지향' 카테고리의 다른 글

스레드란?  (0) 2021.12.01
제네릭이란?(와일드카드)  (0) 2021.11.28
추상클래스와 인터페이스의 차이  (0) 2021.11.26
추상클래스  (0) 2021.11.26
오버라이딩  (0) 2021.11.25