1. 程式人生 > >設計模式(六)Prototype Pattern 原型模式

設計模式(六)Prototype Pattern 原型模式

通過new產生一個物件非常繁瑣,可以使用原型模式

原型模式實現:

——Cloneable介面和clone方法

——Prototype模式實現起來最困難的地方是實現記憶體的複製和操作,Java中提供了clone方法省了大部分事情

案例:多利羊的克隆

package com.littlepage.PrototypePattern;

public class Sheep implements Cloneable{
    String name;
    int date;
    public Sheep(String name, int date) {
        super();
        
this.name = name; this.date = date; } @Override protected Object clone() throws CloneNotSupportedException { Object obj=super.clone(); return obj; } }

1.繼承Cloneable介面

2.重寫clone方法

測試,不同只羊,相同屬性

淺克隆

package com.littlepage.PrototypePattern;

public class
Test { public static void main(String[] args) throws CloneNotSupportedException { Sheep s=new Sheep("molly",2019); Sheep ss=(Sheep)s.clone(); System.out.println(s); System.out.println(ss); } }

 

淺拷貝和深拷貝

淺拷貝,只拷貝一層,不會把物件中引用的物件進行拷貝

深拷貝,拷貝深層

初學java的時候應該學過,這裡不提太多

 

深克隆

package com.littlepage.PrototypePattern;

import java.util.Date;

public class Sheep implements Cloneable{
    String name;
    Date date;
    public Sheep(String name, Date date) {
        super();
        this.name = name;
        this.date = date;
    }
    @Override
    protected Object clone() throws CloneNotSupportedException {
        Object obj=super.clone();
        Sheep s=(Sheep)obj;
        s.date=(Date)this.date.clone();
        return obj;
    }
    
}