프로토타입 모드

3231 단어
1. 원형 모드가 무엇인지Prototype 모드는 대상 창설형 모드로 원형 대상을 복제하는 방법으로 대상의 실례를 만든다.Prototype 모드를 사용하여 생성된 인스턴스에는 원형과 같은 데이터가 있습니다.2. 원형 모델의 특징 1.원형 객체 자체에서 대상 객체를 작성합니다.즉 대상이 이 동작을 만드는 것은 원형 대상 자체에서 나온 것이다.2. 대상 객체는 원형 객체의 클론입니다.프로토타입 모드를 통해 만들어진 대상은 원형 대상과 같은 구조를 가지고 있을 뿐만 아니라 원형 대상과 같은 값을 가지고 있다는 것이다.3. 개체 클론의 깊이 수준에 따라 얕은 클론과 깊은 클론이 있습니다.3. 원형 모델 응용 장면 - 대상을 만들 때 우리는 창설된 대상이 그 기류의 기본 구조를 계승하기를 원할 뿐만 아니라 원형 대상의 데이터도 계승하기를 원한다. -대상 대상에 대한 수정이 기존의 원형 대상에 영향을 주지 않기를 바랍니다. (깊이 복제할 때 전혀 영향을 주지 않을 수 있습니다.)
- 클론 작업에 대한 세부 정보를 숨깁니다.대상 자체에 대한 복제는 클래스 자체의 데이터 세부 사항과 관련된 경우가 많다.
Person.java
import java.util.ArrayList; 
import java.util.List; 
 
public class Person implements Cloneable{ 
    //   
    private String name; 
    //   
    private int age; 
    //   
    private String sex; 
    //  
    private List<String> friends; 
 
    public List<String> getFriends() { 
        return friends; 
    } 
 
    public void setFriends(List<String> friends) { 
        this.friends = friends; 
    } 
 
    public String getName() { 
        return name; 
    } 
 
    public void setName(String name) { 
        this.name = name; 
    } 
 
    public int getAge() { 
        return age; 
    } 
 
    public void setAge(int age) { 
        this.age = age; 
    } 
 
    public String getSex() { 
        return sex; 
    } 
 
    public void setSex(String sex) { 
        this.sex = sex; 
    } 
 
    @Override 
    public Person clone() { 
        try { 
            Person person  = (Person)super.clone(); 
            List<String> newfriends = new ArrayList<String>(); 
            for(String friend : this.getFriends()) { 
                newfriends.add(friend); 
            } 
            person.setFriends(newfriends); 
            return  person; 
        } catch (CloneNotSupportedException e) { 
            e.printStackTrace(); 
            return null; 
        } 
    } 
 
}

MainClass.java
import java.util.ArrayList; 
import java.util.List; 
 
public class MainClass { 
    public static void main(String[] args) { 
//      Person person1 = new Person(); 
//      person1.setName("lifengxing"); 
//      person1.setAge(30); 
//      person1.setSex(" "); 
// 
////        Person person2 = person1; 
//      Person person2 = person1.clone(); 
// 
//      System.out.println(person1.getName()); 
//      System.out.println(person1.getAge()); 
//      System.out.println(person1.getSex()); 
// 
//      System.out.println(person2.getName()); 
//      System.out.println(person2.getAge()); 
//      System.out.println(person2.getSex()); 
 
        Person person1 = new Person(); 
        List<String> friends = new ArrayList<String>(); 
        friends.add("James"); 
        friends.add("Yao"); 
 
        person1.setFriends(friends); 
 
        Person person2 = person1.clone(); 
 
        System.out.println(person1.getFriends()); 
        System.out.println(person2.getFriends()); 
 
        friends.add("Mike"); 
        person1.setFriends(friends); 
        System.out.println(person1.getFriends()); 
        System.out.println(person2.getFriends()); 
    } 
}

좋은 웹페이지 즐겨찾기