스프링의 탄생 - OCP,DIP,APPCONFIG

Kafka·2022년 1월 29일
0

1. OCP와 DIP의 위반

순수 자바로만 코드를 짜다보면, 역할과 구현을 충실하게 분리하여서 코딩하더라도 언젠가는, OCP, DIP를 위배하는 결과에 맞닥트리게 된다. 아무리 인터페이스를 분리하고, 그 인터페이스에 해당하는 구현체들을 만드는 방식으로 프로그램을 구상하더라도, 결국 해당 클래스 내부에는 구체적인 구현체를 선언하고 할당해야하는 과정이 존재한다. 이 의미는, 구현체를 교환할때마다, 프로그래머가 해당 클래스 내부의 코드들을 일일히 수정해야 한다는 번거로움을 의미한다.

이는 개방폐쇄원칙으로 불리는 OCP 원칙과 의존관계 주입이라고 불리는 DIP 원칙의 위배이다.


<기대했던 의존관계>

의존관계가 이렇게 설계되어 있으면 , 우리는 서비스정책을 변경할시에 구현체만 갈아끼우면 될것이다.

하지만, 구현하는 클래스들끼리만 연결을 하다보면, 코드상 단 한줄이라도 실제적인 구현체를 연결하여서 의존관계를 수정할 수 밖에 없다 .

-> 의존이란 연관된 클래스들간의 코드를 수정해야함을 의미하고, 이는 유지 보수과정에서 완벽한 조립식으로 객체지향 프로그래밍이 설계되지 않았음을 의미한다.
-> 결론적으로, 위의 그림과 같은 의존관계가 나타날 수 밖에 없다.

그러면 , 어떻게 이 문제를 해결할것인가 ?

2. APPCONFIG 클래스의 탄생

제 3의 클래스를 등장시킬 차례이다. 연관성이 있는 각자의 클래스들이 서로를 연결하게끔 만들지 말고, 아예 연결만을 전문으로하는 클래스를 하나 만들어 보자는 것이다.

위의 클래스 설계도에서 중요한점은 객체의 생성과 연결은 오직 Appconfig 가 담당한다는 점이다. 이렇게 구조를 바뀌실에 코드 구현이 어떤 방향으로 변하는지 구체적으로 살펴보자.
다음 글에서는 APPCONFIG에 대해서 구체적으로 알아보자.

profile
글,코드,운동을 사랑하는 개발자

0개의 댓글