전체 글
-
Command Pattern디자인 패턴 2022. 2. 23. 14:26
해당 책을 통해 공부한 내용을 정리하고 있습니다. 책에서 정의하는 커맨드 패턴의 정의는 다음과 같다. 요청 내역을 객체로 캡슐화하여 클라이언트를 서로 다른 요청 내역에 따라 매개변수화 할 수 있다. 요청을 큐에 저장하거나 로그로 기록할 수도 있고 작업 취소 기능을 지원 할 수도 있다. 이해를 위해 예시를 들어 정의를 풀어보자. 어떤 요청을 처리하는 객체 ‘Receiver’가 있고, 이 객체에 요청을 보내는 ‘Requester’가 있다고 생각해보자. ‘Requester’는 ‘Receiver’에 처리하기 위한 명령(Command)를 요청(Request) 할 것 이다. 이 명령(Command)들을 따로 객체로 만들어서 캡슐화하는 것이 커맨드 패턴이라고 한다. 실생활에서 볼 수 있는걸로 예시를 들어보자. 전구를..
-
Factory Pattern디자인 패턴 2022. 2. 14. 18:12
해당 책을 통해 공부한 내용을 정리하고 있습니다. 클래스 생성을 처리하는 클래스를 ‘팩토리’라고 부른다. 프로그램을 개발하다보면 객체를 생성할 일이 정말 많은데 이를 이곳 저곳에 흩어놓는 것이 아니라, 한 클래스에 캡슐화 해두면 그 클래스에만 들어가서 처리하면 되므로 훨씬 간단하게 프로그램을 관리 할 수 있다. 팩토리에는 3가지가 있다. 심플 팩토리 팩토리 메소드 패턴 추상 팩토리 패턴 해당 팩토리들을 하나하나 정리해보자. 심플 팩토리 심플 팩토리는 ‘디자인 패턴’이라고는 할 수 없고 객체지향에서 주로 사용하는 ‘관용구’에 가깝다. 이름 그대로 단순히 어떤 객체를 생성하는 클래스를 캡슐화 해둔 것이다. 예를 들어 피자를 파는 피자가게를 생각해보면 피자 객체의 생성만을 처리하는 공장을 따로 두는 것을 의미..
-
Decorator Pattern디자인 패턴 2022. 2. 8. 15:59
해당 책을 통해 공부한 내용을 정리하고 있습니다. OCP 좋은 객체 지향 설계를 위한 원칙 중 SOLID라는 것이 있다. 약어들의 모임인 SRP, OCP, LSP, ISP, DIP의 약자다. 그 중에 OCP(Open closed Principle)이라는 것이 있는데 이는 클래스는 ‘확장’에는 열려있어야 하지만 코드 변경에는 ‘닫혀’있어야 한다는 원칙이다. 즉 기존 코드는 변경하지 않고 확장을 통해 변경 사항을 반영 할 수 있어야 한다는 것을 의미한다. . 코드를 변경하지 않고 변화를 만든다니 뭔가 말이 안되는 말 같은데 이를 어떤식으로 적용 할 수 있을까? 예를 들어보자면 Observer Pattern을 들 수 있다. Observer 패턴에서 옵저버를 추가하면 Subject에 코드를 추가하지 않고도 얼마..
-
Observer Pattern디자인 패턴 2022. 2. 3. 19:25
해당 책을 통해 공부한 내용을 정리하고 있습니다. Observer Pattern 옵저버 패턴을 이해하려면 신문사의 ‘구독’ 시스템을 생각하면 편하다. 신문을 구독하면 다음과 같은 프로세스로 나에게 신문이 도착하게 된다. 신문사에 구독을 신청한다. 신문사에서 뉴스를 배포할 구독자를 파악한다 구독자에게 새로운 뉴스를 배포한다. 옵저버 패턴 또한 위의 패턴과 같이 동작한다고 생각하면 편하다. 신문사 역할을 하는 ‘Subject’가 있고 구독자 역할을 하는 ‘Observer’가 있다. 만약 Subject의 상태가 변화하게 된다면 변화된 값을 Observer들에게 전달하는 방식으로 진행된다. 보통 밑과 같은 형식으로 구성된다. Loose Coupling 옵저버 패턴은 객체들 간의 ‘느슨한 결합’을 제공한다. Su..
-
Strategy Pattern디자인 패턴 2022. 2. 2. 16:14
디자인 패턴, 항상 공부한다고 했다가 손을 놓은 이름이다. 변명을 대자면 인터넷에서 위키피디아를 뒤져가며 공부하기엔 나에겐 너무나도 지루했고 어려웠기에 안했었다. 그래도 워낙에 중요하다고 하니 이번에 유명한 책을 샀다. 파이썬 공부할 때 신세를 졌던 그 이름 ‘헤드 퍼스트’의 책이다. 역시 헤드퍼스트 시리즈라고 해야할까 1장까지 읽은 지금까지의 소감을 말하자면 ‘재미있음!’이다. 첫 장의 내용이 Strategy 패턴인걸 안알려주고 설명을 해주는데 마지막에 이게 Strategy 패턴이라고 알려줘서 정말로 깜짝 놀랐다. 이 기억과 느낌을 까먹기 전에 오늘 배운 내용을 정리해보자. Strategy Pattern 패턴을 배우기 위해서 간단하게 ‘오리 시뮬레이터’를 생각해보자. 이 오리 시뮬레이터에는 청둥오리도있..
-
인증 방법스프링/Spring Security 2021. 11. 9. 23:49
인가를 하는 방법은 크게 다음 세 가지로 나뉜다. Basic Auth Form Based Authentication JWT Token Verify 이 중에서 위의 두 가지인 Basic Auth와 Form Based Authentication을 정리하려고 한다. 📗 Basic Auth 다음과 같은 순서로 진행된다. 클라이언트가 인가(authorization)를 받지 않고 서버에게 원하는 자원에 대해 GET request를 보낸다. 서버는 클라이언트가 인가를 받지 않은 사용자이므로 401 Unauthorized Http 상태 메시지를 보낸다. 클라이언트가 Basic64로 암호화한 username과 password를 'request header'에 포함해 서버에게 전송한다 클라이언트가 보낸 정보가 올바른 정보..
-
HTTP Response와 템플릿 엔진스프링/MVC 2021. 11. 7. 23:35
김영한님의 스프링 MVC - 1편을 듣고 작성했습니다. 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의 웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., 원 www.inflearn.com 서블릿을 통한 HTML Response의 문제점 서블릿을 통해 HTML Reponse를 해야 할 경우 가장 큰 문제는 다음과 같이 response의 writer 객체에 하나하나 값들을 전부 써넣어야 한다는 것이다. @WebServlet(name = "mamberSaveServlet", urlPatterns = "/servlet/members/save") pub..
-
Request Servlet, Response Servlet스프링/MVC 2021. 11. 5. 22:05
📗Request Servlet 스프링의 Request Servlet을 사용하면 Http를 통해 Request되어진 데이터를 받아 올 수 있고, 'HttpServletRequest' 객체를 사용해서 요청되어진 헤더나 데이터등을 편리하게 파싱 할 수 있는 메소드들을 사용 할 수 있다. HTTP에서 메시지가 Request되는 방식은 3가지로 나뉜다. GET 쿼리 파라미터를 통한 요청 POST HTML Form을 통한 요청 HTTP API(JSON)을 통한 데이터 요청 이중에서 GET 쿼리 파라미터를 통한 요청과 POST HTML Form을 통한 요청은 'request.getParameter()'메소드를 통해 데이터를 받아 올 수 있다. /** * 1. 파라미터 전송 기능 * http://localhost:80..