設計模式學習(三)原型模式

2021-09-27 01:25:14 字數 2204 閱讀 5467

原型模式(prototype pattern)是指原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。

適用場景:

1.類初始化消耗資源較多。

2.new產生的乙個物件需要非常繁瑣的過程(資料準備、訪問許可權等)。

3.建構函式比較複雜。

4.迴圈體中生產大量物件時。

定義:

建立乙個新物件,新物件的屬性和原來物件的屬性完全相同,對於引用型別屬性,仍指向原有屬性所指向的物件的記憶體位址。

uml類結構圖:

**實現:

prototype類

public inte***ce prototype
concreteprototypea類
public class concreteprototypea implements prototype 

public void setage(int age)

public string getname()

public void setname(string name)

public list gethobbies()

public void sethobbies(list hobbies)

@override

public prototype clone()

}

client類

public class client 

public prototype startclone(prototype prototype)

}

測試**:
public class prototypetest 

}

執行結果:

com.gupaoedu.vip.pattern.prototype.concreteprototypea@61bbe9ba

com.gupaoedu.vip.pattern.prototype.concreteprototypea@61bbe9ba

定義:建立乙個新物件,屬性中引用的其他物件也會被轉殖,不再指向原有物件位址。

(通過序列化和反序列化來實現深轉殖)

**實現:

monkey類

public class monkey
qitiandasheng類

public class qitiandasheng extends monkey implements cloneable, serializable 

@override

protected object clone() throws clonenotsupportedexception

public object deepclone() catch (exception e)

return null;

}public qitiandasheng shallowclone(qitiandasheng target)

}

jingubang類

public class jingubang implements serializable 

public void small()

}

測試**類

public class deepclonetest  catch (clonenotsupportedexception e) 

qitiandasheng q = new qitiandasheng();

qitiandasheng s = q.shallowclone(q);

system.out.println("淺轉殖:" + (q.jingubang == s.jingubang));}}

設計模式(三) 原型模式

用原型例項指定建立的種類,並通過複製這些原型建立新的物件。原型模式的本質上就是物件拷貝。1 類初始化需要消耗非常多的資源,這個資源包括資料 硬體資源等,通過原型複製這些消耗。2 通過new產生乙個物件需要非常繁瑣的資料準備或訪問許可權,這時可以使用原型模式。3 乙個物件需要提供給其他物件訪問,而且各...

設計模式 三 原型模式

原理 示例 原型模式 prototype pattern 是用於建立重複的物件,同時又能保證效能。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。簡單的說,就是轉殖乙個物件。適用於大物件的建立,因為建立乙個大物件需要很大的開銷,如果每次new就會消耗很大,原型模式僅需記憶體拷貝即可...

設計模式三 原型模式

原型模式 我們從資料庫獲取資料到dto,從dto傳遞給vo,這個時候需要將dto層的資料全部copy到vo中,這種模式就是一種原型模式。copy的方式是轉殖。案例 spring中的 scope prototype 是乙個原型模式,每次建立的時候都是乙個新的物件,這個物件會取到原有物件的所有的值。淺轉...