728x90
반응형
프로토타입패턴 사용
Student keesun = new Student("Keesun");
Student Whiteship = new Student("whiteShip");
ArrayList<Student> students = new ArrayList<>();
student.add(keesun);
student.add(whiteship);
ArrayList<Student clone = (ArrayList<Student>) studnet.clone();
Sysytem.out.println(clone);
- 이전까지는 이렇게 사용했었는데, 실무에서는 이렇게 사용하지 않는다.
Student keesun = new Student("Keesun");
Student Whiteship = new Student("whiteShip");
List<Student> students = new ArrayList<>();
student.add(keesun);
student.add(whiteship);
List<Student clone = (List<Student>) studnet.clone();
Sysytem.out.println(clone);
- 변수 타입지정할 때 추상적인 타입으로 씀
- 좀더 유연하기 때문에 사용 함
ArrayList<Student> students = new ArrayList<>();
List<Student> students = new ArrayList<>();
- 인터페이스 뒤에오는 구체적인 타입의 오브젝트나 구현체 인스턴스 다른것으로 사용
- 단, List의 경우는 Cloneable을 상속하지 않기 때문에 다른 방법으로 컬렉션 복사함
실무에서 많이 사용하는 컬렉션 복사하기
List<Student> clone = new ArrayList<>(student);
- 이렇게 할 수 있는데 clone을 사용하는 것 보다 자주 사용됨
- 위의 경우는 대신 프로토타입은 아님
기존 오브젝트 복사하는 경우
- 평이한 데이터 타입에 자체를 복사 하고 싶을 때
GithubIssueData githubIssueData = new GithubIssueData();
githubIssueData.setId(githubIssue.getId());
githubIssueData.setRepositoryName(githubIssue.getRepository().getName());
- 대게 이렇게 하는데
- ModelMapper를 이용하면 더 쉽게 할 수 있음
- modelmapper.org
Modelmapper 사용
ModelMapper.modelMapper = new ModelMapper();
GithubIssueData githubIssueData = modelMapper.map(githubIssue, GithubIssueData.class);
System.out.println(githubIssueData);
- 리플렉션을 이용해서 하는 것임
- 리플렉션에 대한 개념을 알고 있으면 좋음
- 직접 코딩 하지 않아도 되고 알아서 해주는 것
728x90
반응형
'CS Study > 디자인패턴' 카테고리의 다른 글
2021.12.07_어댑터패턴02.패턴적용하기 (0) | 2021.12.07 |
---|---|
2021.12.07_어댑터패턴01.패턴소개 (0) | 2021.12.07 |
2021.12.04_프로토타입패턴03.장점과단점 (0) | 2021.12.04 |
2021.12.04_프로토타입패턴02.패턴적용하기 (0) | 2021.12.04 |
2021.12.02_프로토타입패턴01.패턴소개 (0) | 2021.12.04 |
댓글