본문 바로가기
카테고리 없음

토비의 스프링 내용 정리 1 [2024.12.09]

by 집돌이디벨로퍼 2024. 12. 9.

스프링이 관심을 갖는 대상인 오브젝트가 무엇인지 공부하는 것이 먼저

오브젝트의 설계, 오브젝트의 구현, 오브젝트의 동작원리 



이 세가지에 더 집중해서 공부


DAO : 데이터베이스를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트

 

리팩토링

코드가 중복되면 요구사항이 추가로 더 생길경우 그 코드가 사용된 만큼 수정을 반복해야하니 유지보수성이 떨어진다 이때문에 코드를 리팩토링 하는 것이 필요하다

=> 코드 리팩토링을 하면 생산성 증가, 코드의 품질이 높아지고 유지보수가 용이하며 유연한 제품을 만들 수 있다.

 

템플릿 메소드 패턴

메서드를 더 디테일하게 분리할 때 사용하는 방법이다. 전체적으로 클래스에서 변화가 있을 법한 부분을 제외하고 하나의 부모 클래스로 생각한다 그 다음 그 부모클래스(슈퍼클래스)를 상속받아 변화가 있을 것 같은 부분을 분리해 서브클래스로 작성하는 방법이다. => 서브클래스에서 구체적인 오브젝트 생성방법을 결정하게 하는 것

슈퍼클래스에서 디폴트 기능을 정의해두거나 비워뒀다가 서브클래스에서 선택적으로 오버라이드할 수 있도록 만들어둔 메소드를 훅(hook) 메서드라고 한다. 서브클래스에서 추상메서드를 구현 or 훅 메서드를 오버라이드 하는 방법을 이용해 기능의 일부를 확장한다

 

디자인 패턴

소프트웨어 설계 시 특정 상황에서 자주 만나는 문제를 해결하기 위해 사용할 수 있는 재사용 가능한 솔루션

디자인 패턴들을 보면 두 종류의 구조로 정리가 된다

1. 클래스 상속

2. 오브젝트 합성

패턴들에서 가장 중요한 것은 각 패턴의 핵심이 담긴 목적의도

 

팩토리 메서드 패턴

템플릿 메서드 패턴과 마찬가지로 상속을 통해 기능을 확장하게 하는 패턴 => 구조 비슷

슈퍼클래스 코드에서 서브클래스에서 구현할 메서드를 호출해서 필요한 타입의 오브젝트를 가져와 사용하는데 이때 서브클래스는 메서드를 인터페이스 타입으로 오브젝트를 리턴하기 때문에 서브클래스가 어떤것을 만드는지 슈퍼클래스에서는 전혀 알 필요가 없다

=> 서브클래스에서 오브젝트 생성방법과 클래스를 결정할 수 있도록 미리 정의해둔 메서드를 팩토리 메서드라고 한다.

이 방식을 통해 오브젝트 생성 방법을 나머지 로직, 즉 슈퍼클래스의 기본 코드에서 독립시키는 방법을 팩토리 메서드 패턴이라고 한다.

 

주의 : 자바에서 종종 오브젝트를 생성하는 기능을 가진 메서드를 일반적으로 팩토리 메서드라고 부르기도 하기때문에 의미 파악 혼동에 주의해야하는것이 좋다.(팩토리 메서드:오브젝트 생성 vs 팩토리 메서드 패턴:디자인 패턴)

 

상속하는 방식으로 클래스를 분리하는 것은 클래스간의 밀접도를 높일 수도 있기에 항상 선호되는 방법이 아님 또는 이미 클래스가 상속받고 있는 상태라면 이런 디자인 패턴을 사용하지도 못함 => 상속방식으로 하는 것은 한계가 있을 수 있음