[기술공부]봉투패턴(Envelope pattern)

allnight5·2023년 5월 8일
0

기술공부

목록 보기
28/33

목차
적용전
적용전소스
적용후
적용후소스

봉투패턴은 언제쓰냐면

이미 생성되어있는 객체에 공통적으로 들어가는데
반복해서 넣으면 리소스를 잡아먹으니 한번만 통합해서 보낼때 사용하는것 같다.

봉투패턴 사용 전

목차로

{
    "code":"success",
    "data":{
    		"user":[
          {
              "id" = 1,
              "email" = "naver@naver.com",
              "nickName" = "네이버",
              "viewCount" = 33
          },
          {
              "id" = 2,
              "email" = "google@google.com",
              "nickName" = "구글",
              "viewCount" = 33
          }, 
          {
              "id" = 3,
              "email" = "gmail@gmail.com",
              "nickName" = "쥐",
              "viewCount" = 33
          },
          ....
          {
              "id" = 33,
              "email" = "daum@daum.net",
              "nickName" = "다음",
              "viewCount" = 33
          },
          ...
       ],
	},
	"message":null
}

사용전 소스코드

목차로

User user1 = new User();
user1.setId(1L);
user1.setNickName("네이버");
user1.setEmail("naver@naver.com");
user1.setViewCount(33);

User user2 = new User();
user2.setId(2L);
user2.setNickName("구글");
user2.setEmail("google@google.com");
user2.setViewCount(33);
...
List<User> users = Arrays.asList(user1, user2, ...);

위와 같이 getCount는 같지만 중복해서 들어간다.
보내는 데이터가 커지고 찾는 것도 많고 쓸모없이 중복해서 가지고 있다는 것이다.

봉투패턴 사용후

목차로

{
    "code":"success",
    "data":
    		"user":[
          {
              "id" = 1,
              "email" = "naver@naver.com",
              "nickName" = "네이버"
          },
          {
              "id" = 2,
              "email" = "google@google.com",
              "nickName" = "구글"
          }, 
          {
              "id" = 3,
              "email" = "gmail@gmail.com",
              "nickName" = "쥐"
          },
          ....
          {
              "id" = 33,
              "email" = "daum@daum.net",
              "nickName" = "다음"
          },
          ...
       ],
       "viewCount" = 33,
	},
	"message":null
}

다른객체에서 이 User라는 개체를 가져와서 넣어줄 필요가 있다.

봉투패턴 적용 하기

목차로

public class UserEnvelope {
  private List<User> user;
  private int viewCount;

  public UserEnvelope(List<User> user, int viewCount) {
    this.user = user;
    this.viewCount = viewCount;
  }

사용후 소스코드

User user1 = new User();
user1.setId(1L);
user1.setNickName("네이버");
user1.setEmail("naver@naver.com");

User user2 = new User();
user2.setId(2L);
user2.setNickName("구글");
user2.setEmail("google@google.com");

List<User> users = Arrays.asList(user1, user2);
UserEnvelope envelope = new UserEnvelope(users, 33);
profile
공부기록하기

0개의 댓글