[책 정리] 디자인 패턴 - 옵저버 패턴
·
책&강의 정리
1. 옵저버 패턴 옵저버 패턴(Observer Pattern)은 주체가 어떤 객체(subject)의 상태 변화를 관찰하다가 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 디자인 패턴 여기서 주체란 객체의 상태 변화를 보고 있는 관찰자이며, 옵저버들이란 이 객체의 상태 변화에 따라 전달되는 메서드 등을 기반으로 '추가 변화 사항'이 생기는 객체들을 의미한다. -> 위의 그림처럼 주체와 객체를 따로 두지 않고 상태가 변경되는 객체를 기반으로 구축하기도 한다. 1) 트위터 옵저버 패턴을 활용한 서비스 내가 어떤 사람인 주체를 '팔로우'했다면 주체가 포스팅을 올리게 되면 알림이 '팔로워'에게 가야한다. 2) MVC 패턴 주체라고 볼 수 있는 모델(model)에서 변경..
[책 정리] 디자인 패턴 - 전략 패턴
·
책&강의 정리
전략 패턴은 정책 패턴이라고도 하며, 객체의 행위를 바꾸고 싶은 경우 '직접' 수정하지 않고 전략이라고 부르는 '캡슐화한 알고리즘'을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴 컨텍스트 프로그래밍에서의 컨텍스트는 상황, 맥락, 문맥을 의미하며 개발자가 어떠한 작업을 완료하는 데 필요한 모든 관련 정보를 말한다 1. 자바의 전략 패턴 어떤 것을 살 때 네이버페이, 카카오페이 등 다양한 방법으로 결제하듯이 어떤 아이템을 살 때 LUNACard로 사는 것과 KAKAOCard로 사는 것을 구현한 예제 결제 방식의 '전략'만 바꿔서 두 가지 방식으로 결제하는것 구현 import java.text.DecimalFormat; import java.util.ArrayList; import java.u..
[책 정리] 디자인 패턴 - 팩토리 패턴
·
책&강의 정리
시작하기전 질문 ✏️ 9. 팩토리 패턴이 무엇인가요? 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴입니다. 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴입니다. ✏️ 10. 팩토리 패턴은 그럼 왜 사용하나요? 객체 생성 로직을 추상화하여 유지보수성을 향상하고, 클라이언트 코드와 객체 생성을 분리하기 위해 사용합니다. 주로 다양한 객체 유형을 생성해야 하고, 생성 과정이 복잡하거나 변경 가능한 경우에 유용하게 사용됩니다. ✏️ 11. 팩토리 패턴은 어떻게 사용하나요? Java의 경우, 팩토리 메서드나 추상 팩토리 인터페이스를 정의하고, 서브클래스에서 구체적인 객체를 생성하도록 구현합니다. ✏️ 12...
[책 정리] 디자인 패턴 - 싱글톤 패턴
·
책&강의 정리
시작하기전 질문 ✏️ 1. 디자인 패턴에 대해 설명해주세요. 디자인 패턴은 소프트웨어 디자인 과정에서 자주 발생하는 문제들에 대한 전형적인 해결책입니다. 이는 코드에서 반복되는 디자인 문제들을 해결하기 위해 맞춤화할 수 있는 미리 만들어진 청사진과 비슷합니다. 디자인 패턴 계의 교과서로 불리는 GoF의 디자인패턴에서는 객체지향적 디자인 패턴의 카테고리를 "생성 패턴(Creational Pattern)", "구조 패턴(Structural Pattern)", "행동 패턴(Behavioral Pattern)" 3가지로 구분하고 있습니다. 생성패턴에는 싱글톤 패턴, 팩토리 메서드 패턴, 빌더 패턴등이 있고 구조패턴에는 어댑터 패턴, 프록시 패턴 행동 패턴에는 전략 패턴, 옵저버 패턴 등이 있습니다. ✏️ 2. ..
[Java] 모던 자바 인 액션 Chapter 1 - 자바 8, 9, 10, 11 : 무슨 일이 일어나고 있는가
·
책&강의 정리
자바는 처음부터 많은 유용한 라이브러리를 포함하는 잘 설계된 객체지향 언어로 시작했다. 코드를 JVM 바이트 코드로 컴파일하는 특징 때문에 자바는 인터넷 애플리케이션의 주요 언어가 되었다. JVM의 업데이트 덕에 JVM에서 실행되는 경쟁 언어는 더욱 부드럽게 실행될 수 있으며, 자바와 상호 동작할 수 있게 되었다. 또한 자바는 다양한 임베디드 컴퓨팅 분야도 장악하고 있었다. 하지만 프로그래밍 언어 생태계에 변화의 바람이 불었다. 프로그래머는 빅데이터라는 도전에 직면하면서 멀티코어 컴퓨터나 컴퓨팅 클러스터를 이용해서 빅 데이터를 효과적으로 처리할 필요성이 커졌다. 또한 병렬 프로세싱을 활용해야 하는데 이전의 자바로는 충분히 대응할 수 없었다. 그렇기에 자바는 변화하였다. 자바 8은 다양한 프로그래밍 도구와..
[Java / Spring] 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 11. 파일 업로드
·
책&강의 정리
본 내용은 인프런 김영한님의 "스프링 MVC 2편 - 백엔드 웹 개발 활용 기술" 강의 내용을 정리한 것입니다. 📕 HTML 폼 전송 방식 📗 application/x-www-form-urlencoded HTML 폼 데이터를 서버로 전송하는 가장 기본적인 방법 Form 태그에 별도의 enctype 옵션이 없으면 웹 브라우저는 요청 HTTP 메시지의 헤더에 다음 내용을 추가 Content-Type: application/x-www-form-urlencoded 그리고 폼에 입력한 전송할 항목을 HTTP Body에 문자로 username=kim&age=20와 같이 &로 구분해서 전송 파일을 업로드하려면 파일은 문자가 아니라 바이너리 데이터를 전송해야 하므로 문자를 전송하는 이 방식으로 파일을 전송하기는 어..
[Java / Spring] 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 10. 스프링 타입 컨버터
·
책&강의 정리
본 내용은 인프런 김영한님의 "스프링 MVC 2편 - 백엔드 웹 개발 활용 기술" 강의 내용을 정리한 것입니다. 📕 스프링 타입 컨버터 소개 문자를 숫자로 변환하거나, 반대로 숫자를 문자로 변환해야 하는 것 처럼 애플리케이션을 개발하다 보면 타입을 변환해야 하는 경우가 상당히 많다. 예시 [HelloController] - 문자 타입을 숫자 타입으로 변경 @GetMapping("/hello-v1") public String helloV1(HttpServletRequest request) { String data = request.getParameter("data"); //문자 타입 조회 Integer intValue = Integer.valueOf(data); //숫자 타입으로 변경 System.ou..
[Java / Spring] 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 9. API 예외 처리
·
책&강의 정리
본 내용은 인프런 김영한님의 "스프링 MVC 2편 - 백엔드 웹 개발 활용 기술" 강의 내용을 정리한 것입니다. 📕 API 예외 처리 API의 경우에는 생각할 내용이 더 많다. 오류 페이지는 단순히 고객에게 오류 화면을 보여주고 끝이지만, API는 각 오류 상황에 맞는 오류 응답 스펙을 정하고, JSON으로 데이터를 내려주어야 한다. [ApiExceptionController] - API 예외 컨트롤러 @Slf4j @RestController public class ApiExceptionController { @GetMapping("/api/members/{id}") public MemberDto getMember(@PathVariable("id") String id) { if (id.equals("..
[Java / Spring] 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 8. 예외 처리와 오류 페이지
·
책&강의 정리
본 내용은 인프런 김영한님의 "스프링 MVC 2편 - 백엔드 웹 개발 활용 기술" 강의 내용을 정리한 것입니다. 📕 서블릿 예외 처리 📗 서블릿 예외 처리 - 소개 스프링이 아닌 순수 서블릿 컨테이너의 예외 처리 서블릿은 다음 2가지 방식으로 예외 처리를 지원한다 Exception (예외) response.sendError(HTTP 상태 코드, 오류 메시지) Exception(예외) 자바 직접 실행 자바의 메인 메서드를 직접 실행하는 경우 main이라는 이름의 쓰레드가 실행 실행 도중에 예외를 잡지 못하고 처음 실행한 main() 메서드를 넘어서 예외가 던져지면, 예외 정보를 남기고 해당 쓰레드는 종료 웹 애플리케이션 웹 애플리케이션은 사용자 요청별로 별도의 쓰레드가 할당되고, 서블릿 컨테이너 안에서 ..