본문 바로가기

OOP3

IoC - 제어의 역전에 대해서... 이번 포스팅의 주제는 제어의 역전입니다. 스프링을 사용하다 보면 제어의 역전/의존성 주입 이라는 단어가 항상 눈에 띕니다. 그리고 프레임워크와 라이브러리의 차이가 제어의 역전에 있다는 문장을 접해본 적이 있었습니다. 뭔가 사용하는 데 있어서 다를게 없는 거 같은데 제어의 역전이라는 차이가 있다는 것에 흥미가 생겼습니다. 그래서 이번 주제는 제어의 역전이고, 개념을 최대한 정확하게 이해하고 정리해 볼게요! IoC - 제어의 역전이란... 우선 여기서 제어의 흐름이라는 개념에 대해 알고 갈 필요가 있습니다. 제어의 흐름은 일반적인 프로그램의 흐름이 아닌 그와 반대되는 흐름을 가지는 것으로 볼 수 있습니다. 좀 더 자세히 살펴보겠습니다. 일반적인 프로그램의 흐름은 대개 이렇게 흘러 갑니다. Java에서는 ma.. 2023. 9. 11.
프로젝트 중복 제거 1 - 인터페이스를 이용한 공통 작업 추출 이번 포스팅 주제는 현재 진행중인 프로젝트 리팩터링 입니다. 리팩터링은 프로젝트 코드의 내부 동작은 그대로! 어떤 코드 외적인 요소들을 좀 더 가다듬는 작업입니다. 리팩터링의 주된 목적은 가독성, 유지보수성 등 코드의 품질을 높이는 것이고, 이를 통해 개발 생산성과 좀 더 견고하면서 유연한 제품을 만드는 것입니다! 리팩터링 전 코드 간단한 함수 설명을 드리면 해당 함수들의 기능은 서버에 특정 상황이 발생하면 클라이언트에 데이터를 전송하는 코드입니다. 여기 위에 함수 두개는 너무나도 중복되고 있습니다. 그 이유는 List에 요소가 서로 다른데 이 두개를 어떻게 하나로 묶어야 할지 그 당시에는 몰랐기 때문에 우선 저런식으로 코드를 작성한 것입니다. 문제점 저는 객체를 생성하는 부분이 가장 근본이 되는 문제라.. 2023. 9. 10.
Strategy Pattern - 전략 패턴 이번 포스팅 주제는 GoF 디자인 패턴 중 하나인 Strategy Patten - 전략 패턴 입니다. 게시판의 검색 서비스를 리팩터링 하기 위해 좀 더 좋은 방법이 없을까 찾아보다 책에서 읽은 전략 패턴이 기억나 적용 해보려고 합니다! 리팩터링 전 @Transactional(readOnly = true) public Page searchArticles(SearchType searchType, String searchKeyword, Pageable pageable) { if(searchKeyword == null || searchKeyword.isBlank()){ return articleRepository.findAll(pageable).map(ArticleDto::from); } return switc.. 2023. 9. 3.