Open leeyuunsung opened 3 years ago
clone()
메서드를 사용하여 구현할 수 있고, Cloneable
인터페이스 를 implements 하면 해당 메서드를 override 할 수 있다public static void main(String[] args) {
...
ArrayList<Student> students = new ArrayList<>();
...
ArrayList<Student> clone = students.clone();
}
ArrayList
와 같이 구체 클래스에 의존해야 하기 때문에 자주 쓰이지 않음clone()
메서드는 List
인터페이스에서는 제공해주고 있지 않음public static void main(String[] args) {
...
List<Student> students = new ArrayList<>();
...
List<Student> clone = new ArrayList<>(students);
}
public static void main(String[] args) {
GithubRepository repository = new GithubRepository();
repository.setUser("whiteship");
repository.setName("live-study");
GithubIssue githubIssue = new GithubIssue(repository);
githubIssue.setId(1);
githubIssue.setTitle("1주차 과제: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가.");
ModelMapper modelMapper = new ModelMapper();
GithubIssueData githubIssueData = modelMapper.map(githubIssue, GithubIssueData.class);
...
}
프로토타입 패턴 1부 - 패턴 소개
GithubRepository
상에 새로운 이슈(GithubIssue
) 를 생성한다고 가정할 때,프로토타입 패턴 2부 - 패턴 적용하기
clone()
메서드는Object
클래스 에서 제공clone()
메서드는 protected 이므로,Cloneable
인터페이스를 implements 하고clone()
메서드를 override 해 줘야 함주의사항
clone()
메서드는 Shallow copy(얕은 복사) 를 제공