분류 전체보기

데코레이터 패턴 객체에 추가 요소를 동적으로 더할 수 있습니다. 데코레이터를 사용하면 서브클래스를 만들 때보다 훨씬 유연하게 기능을 확장할 수 있습니다. 저는 쉽게 접근해 봤는데 데코레이터는 장식하는 사람이라는 뜻을 가지는데, 마치 크리스마스트리에 추가 요소(양말, 종) 등을 장식하여 더 멋진 트리를 만들어주는 즉, 더 좋은 기능이 되도록 만들어 주는 패턴이라고 생각합니다. 데코레이터 패턴 사용 예제 저는 데코레티어 패턴에서 생각나는 주제가 2가지 있었는데 첫 번째는 크리스마스트리였고,두 번째는 피자였습니다. 그래서 예제는 제가 즐겨먹던 피자로 만들어 보겠습니다. public abstract class Pizza { String description = "피자"; public String getDescr..
옵저버 패턴 한 객체(Subject)의 상태가 바뀌면 그 객체에 의존하는 다른 객체(Observer)에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의합니다. 일상생활 속 경험을 생각해보면 옷을 사고 나서 옷이 집에 도착하게 되면 보통 문자나 카톡으로 알림을 주는데 이때 집에 있으면 바로 뛰쳐나가 택배를 받아보는 반응을 하는데 이런 상황이 옵저버 패턴과 비슷하다고 생각합니다. 이 외의 생각나는 상황 아침에 기상을 위한 핸드폰의 알람 운동 후 먹는 프로틴 디자인 패턴을 공부하고 블로그에 정리하기 옵저버 패턴의 구조 Observer 인터페이스에는 update()라는 함수가 있다 update()는 이벤트가 발생했을 때 처리할 행위를 정의한다. Subject에는 observerCollect..
오리 시뮬레이션 게임, SimUduck 모든 오리가 꽥꽥 소리를 낼 수 있고(quack()), 헤엄을 칠 수 있으므로(swim()) 오리를 슈퍼 클래스로 작성을 했어요. 오리마다 모양이 다르기 때문에 모양을 나타내는 메소드는 추상 메소드로 만들고 상속받는 클래스에서 오버라이드 하기로 했습니다. 오리 시뮬레이션 게임 차별화하기. 다른 회사보다 차별화를 위해 오리가 날 수 있도록 해야 한다. 가장 간단한 방법으로 Duck에 날 수 있는 메소드만 추가하면 모든 오리가 그걸 상속받기 때문에 Duck에 fly()메소드 추가를 해요. 문제 발생 Duck의 몇몇 서브클래스만 날아야 하는데 날아다니면 안 되는 오리에게도 날아다니는 기능이 추가됐습니다. 슈퍼클래스의 일부만 고쳤는데, 프로그램 전체에 고무오리가 날아다니는..
· 스프링
N + 1 문제란 연관 관계가 설정된 엔티티를 조회할 경우 조회된 데이터의 갯수(n) 만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오게 된다. 이를 N+1문제라고 한다. 실제 발생하는 경우를 살펴보자. package com.test.test; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Entity @Getter @Setter @NoArgsConstructor public class Board { @Id @GeneratedValue(strategy = Gene..
· 스프링
Springboot + JPA 활용해 과제를 진행하던중 entity를 화면 단에 직접적으로 노출하면 안 된다는 영한 님의 강의 내용이 생각이 났다. 그때는 그냥 강의를 듣고 열심히 코드를 따라 치기만 했지 왜지? 라는 의문점은 다음으로 넘기고 이번에 과제 도중 그런 상황이 생겨서 한 번 정리해보자. 우선 entity와 dto를 알아보자. entity란 실제 DB 테이블과 매핑되는 핵심 클래스. DB 테이블에 존재하는 칼럼들을 필드로 가지는 객체. dto란 DTO(Data Transfer Object) 계층(Layer)간 데이터 교환을 위해 사용되는 객체 DB에서 데이터를 가져와 Service 및 Controller 등으로 전송할 때 사용하는 객체 불필요한 데이터 노출 Entity를 데이터 request ..
인증 인증은 사용자가 누구인지 확인하는 단계. 인증의 대표적인 예로 '로그인'이 있으며 로그인은 DB에 등록된 id와 pw를 사용자가 입력한 id와 pw와 비교해서 일치 여부를 확인하는 과정이다. 로그인에 성공하면 애플리케이션 서버는 응답으로 사용자에게 토큰을 전달하고 실패한 사용자는 토큰을 전달받지 못해 원하는 리소스에 접근할 수 없다. 인가 인가는 인증을 통해 검증된 사용자가 애플리케이션 내부의 리소스에 접근할 때 사용자가 해당 리소스에 접근할 권리가 있는지 확인하는 과정이다. 일반적으로 사용자가 인증 단계에서 발급받은 토큰은 인가 내용을 포함하고 있으며, 사용자가 리소스에 접근하면서 토큰을 함께 전달하면 애플리케이션 서버는 토큰을 통해 권한 유무 등을 확인해 인가를 수행한다. 접근 주체 접근 주체는..
RestTemplate RestTemplate은 스프링에서 HTTP 통신 기능을 손쉽게 사용하도록 설계된 템플릿이다. HTTP 서버와의 통신을 단순화한 이 템플릿을 이용하면 RESTful 원칙을 따르는 서비스를 편리하게 만들 수 있다.RestTemplate은 기본적으로 동기 방식으로 처리되며 비동기 방식으로 사용하고 싶을 경우 AsynRestTemplate을 사용하면 된다. RestTemplate의 특징 HTTP 프로토콜의 메서드에 맞는 여러 메서드를 제공한다 RESTful 형식을 갖춘 템플릿이다 HTTP 요청 후 JSON, XML, 문자열 등의 다양한 형식으로 응답을 받을 수 있다. 블로킹 I/O 기반의 동기 방식을 사용한다 다른 API를 호출할 떄 HTTP 헤더에 다양한 값을 설정할 수 있다. Res..
· 스프링
연관관계 매핑 연관관계 매핑 종류와 방향 OneToOne : 일대일 OneToMany : 일대다 ManyToOne : 다대일 MantToMany : 다대다 DB에서는 두 테이블의 연관관계를 설정하면 외래키를 통해 서로 조인해서 참조하는 구조로 생성되지만 JPA를 사용하는 개체지향 모델링에선 엔티티 간 참조 방향을 설정할 수 있다. DB와 관계를 일치시키기 위해 양방향으로 설정해도 무관하지만 비지니스 로직의 관점에서 봤을 때 단방향 관계만 설정해도 해결되는 경우가 많다. 단방향 : 두 엔티티의 관계에서 한쪽의 엔티티만 참조하는 형식 양방향 : 두 엔티티의 관계에서 각 엔티티가 서로의 엔티티를 참조하는 형식 연관관계가 설정되면 한 테이블에서 다른 테이블의 기본값을 외래키로 갖게 되는데 이런 관계에서는 주인이..
백수왕
'분류 전체보기' 카테고리의 글 목록 (8 Page)