Prototype 原型/克隆

Prototype 原型/克隆

  • Java自带克隆模式
  • 一个对象的的属性已经确定,需要产生很多相同
  • 首先实现标记型接口cloneable,重写Object中的clone方法
  • 注意点是需要区分浅克隆和深克隆
    • 浅克隆属性类不需要也继承cloneable并重写clone
      1. public class Prototype {
      2. public static void main(String[] args) throws CloneNotSupportedException {
      3. Local local = new Local(22);
      4. Person person = new Person(18,local);
      5. Person person1 = person.clone();
      6. System.out.println(person1.local == person.local);
      7. person.local = new Local(33);
      8. System.out.println(person1.local.num);
      9. }
      10. }
      11. class Person implements Cloneable{
      12. int age;
      13. Local local;
      14. public Person(int age, Local local) {
      15. this.age = age;
      16. this.local = local;
      17. }
      18. @Override
      19. protected Person clone() throws CloneNotSupportedException {
      20. Person person = (Person) super.clone();
      21. person.local = local.clone();
      22. return person;
      23. }
      24. }
      25. class Local implements Cloneable{
      26. int num;
      27. public Local(int num) {
      28. this.num = num;
      29. }
      30. @Override
      31. protected Local clone() throws CloneNotSupportedException {
      32. Local local = (Local) super.clone();
      33. return local;
      34. }
      35. }