原型模式(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 monkeyqitiandasheng類
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 是乙個原型模式,每次建立的時候都是乙個新的物件,這個物件會取到原有物件的所有的值。淺轉...