IT, 코딩 6

[디자인 패턴] 템플릿 메서드 (Template Method) 패턴이란?

템플릿 메서드 (Template Method) 패턴이란? "작업에서 알고리즘의 골격을 정의하고 일부 단계를 하위 클래스로 연기합니다. 템플릿 메서드를 사용하면 하위 클래스가 알고리즘의 구조를 변경하지 않고도 알고리즘의 특정 단계를 재정의할 수 있습니다." [GOF] 템플릿 메서드 (Template Method) 패턴은 전체적으로 동일하면서 부분적으로 다른 구문으로 구성된 메서드의 중복을 최소화할 때 유용한 패턴이다. 동일한 기능을 상위 클래스에서 정의하면서 확장/변화가 필요한 부분만 서브 클래스에서 구현할 수 있도록 한다. 즉, 부모 클래스에 알고리즘의 골격인 템플릿을 정의하고, 일부 변경되는 로직은 자식 클래스에 정의하는 것이다. 이렇게 하면 자식 클래스가 알고리즘의 전체 구조를 변경하지 않고, 특정 ..

테스트 코드가 필요한 이유

테스트 코드를 왜 작성해야 할까? 1. 내가 작성한 코드가 잘 돌아가는가? 2. 예상한 결과를 내놓는가? 3. 버그는 없는가? 테스트 코드는 위 3가지 질문에 대한 답변을 내놓는다. 한 예를 들어보자. 테스트 코드를 작성하기 이전에 A는 새로 만든 기능에 대한 테스트를 수동으로 진행하였다. 그리고 또 다른 기능이 추가되면서 이번에는 B가 테스트를 수동으로 진행하였다. 또 다른 기능을 추가로 개발하였는데 이번에는 기존의 코드와 겹치는 부분이 발생하게 되었다. 즉 테스트 영역이 겹치게 된 셈이다. 이 때, 기존 코드가 원래 동작하는대로 동작하는지를 다시 검증해야 하고, 새로운 코드에 대한 테스트도 진행해야 한다. 즉 새로운 코드와, 기존의 기능에 대한 검증을 진행해야 한다. 위와 같은 경우에는 서비스가 커질..

IT, 코딩/Spring 2024.03.30

Service와 ServiceImpl, 반드 필요한가?

Github에서 많은 서버 레포지토리를 보다 보면 Service 인터페이스를 구현한 ServiceImpl 구현 클래스를 볼 수 있다. 하지만 대부분의 경우 하나의 Service와 대응되는 ServiceImpl가 단 하나인, 1:1 대응관계를 가지고 있었다. 이 글은 이와 같이 "Service와 ServiceImpl이 1:1 구조를 가질 때, 서비스 클래스를 구체 클래스로 바로 만드는 것이 낫지 않나?" 라는 의문을 갖고 함께 작성되었다. Service와 ServiceImpl를 분리하는 이유 Service 인터페이스를 만들고 이를 구현한 ServiceImpl 클래스를 만들어 둘을 분리하는 이유를 먼저 알아보자. 1. 인터페이스와 구현 클래스를 분리할 수 있다. - Service 인터페이스는 비즈니스 로직을..

IT, 코딩/Spring 2024.03.19

안드로이드 스튜디오 깃허브 연동부터 커밋/푸쉬 하는 법 (가장 쉽고 편한 방법!!)

Git bash 필요 X 깃허브를 안드로이드 스튜디오에 연동해두기만 한다면 몇 번의 클릭만으로 프로젝트를 깃허브에 올릴 수 있음 Github에 익숙하지 않은 사람도 Github 계정만 있다면 바로 따라 할 수 있다. 1. 안드로이드 스튜디오와 깃허브 계정 연동하기 안드로이드 스튜디오 좌측 상단 File > Settings.... 클릭. Settings 창 뜨면 Version Control에서 Git 클릭 아래 사진에서 빨간 네모로 표시해 둔 Test를 클릭하면 현재의 깃 버전을 알 수 있고 실행 테스트를 할 수 있게 된다. 이제 본격적으로 안드로이드 스튜디오와 깃허브 계정을 연동해보자. 먼저 위에서와 같이 Settings 창을 띄운다. 그리고 이번에는 Version Control에서 Git이 아닌 Git..

Use Token으로 안드로이드 스튜디오에 깃허브 계정 로그인하는 방법

먼저 깃허브에 들어가서 로그인합니다. 그리고 아래와 같이 우측 상단 아이콘을 누르면 빨간 네모 박스로 표시해둔 Settings가 보이는데 클릭해줍니다. Settings로 들어가면 아래 화면과 같이 Profile이 뜨고 왼쪽에 다양한 카테고리가 보입니다. 그중 Developer settings를 클릭해줍니다. Developer settings를 클릭하였다면 다시 왼쪽 카테고리에서 Personal access tokens를 클릭합니다. 그러면 아래와 같은 화면이 나오게 되는데 Generate new token을 클릭해줍니다. (저는 이미 지난 주에 토큰을 한 번 생성하였기 때문에 아래와 같이 생성한 적이 있다고 뜹니다.) 이제 어디에 사용할 token인지 알 수 있도록 적당한 Note를 작성해주고 아래와 같..

안드로이드 스튜디오 가상머신/애뮬레이터 실행 오류 해결 방법

아래와 같은 에러 발생 시 해결방법 Installation did not succeed. The application could not be installed: SHELL_UNRESPONSIVE The device timed out while trying to install the application. Retry 분명 어제까지만 해도 가상 머신이 잘 작동했는데 오늘 갑자기 실행이 되지 않아서 당황했네요... 정확히 말하자면 빌드도 성공하고 가상 디바이스도 켜지는데 app이 안 켜져서 구현이 제대로 된 건지 확인할 수가 없었어요. 수도 없이 run 버튼을 눌러보고 노트북도 껐다가 켜보고 했지만 아무런 변화가 없었고 계속 위와 같은 에러 메시지만 출력되는 것을 확인할 수 있었습니다. 결국에는 저 혼자서 이..