設計模式之原型模式

2021-07-16 07:10:27 字數 1946 閱讀 9481

當使用new關鍵字例項化物件的時候,很複雜,可以考慮原型模式來實現!

再則就是new物件比較耗時,轉殖(clone)比較節省時間!

//需要實現cloneable介面 但是clone是obejct裡面的函式

public

class

sheep

implements

cloneable,serializable

public string getsname()

public

void

setsname(string sname)

public date getbirthday()

public

void

setbirthday(date birthday)

public

sheep(string sname, date birthday)

public

sheep()

}

/**

* 測試原型模式(淺轉殖)

*/public class client

}ps:淺轉殖會出現問題,如上s1與s2的date指向同乙個物件。那麼轉殖之後,s1的date改變了,s2的date也會跟著改變,這樣s1和s2就剪不斷理還亂了。

//測試深複製

public

class

sheep2

implements

cloneable

public string getsname()

public

void

setsname(string sname)

public date getbirthday()

public

void

setbirthday(date birthday)

public

sheep2(string sname, date birthday)

public

sheep2()

}

//測試:

public class client2

}

/**

* 原型模式(深複製,使用序列化和反序列化的方式實現深複製)

* */

public

class

client3

}

/**

* 測試普通new方式建立物件和clone方式建立物件的效率差異!

* 如果需要短時間建立大量物件,並且new的過程比較耗時。則可以考慮使用原型模式!

* */

public

class

client4

long end = system.currenttimemillis();

system.out.println("new的方式建立耗時:"+(end-start));

}

public

static

void

testclone(int size) throws clonenotsupportedexception

public

static

void

main(string args) throws exception

}class laptop implements cloneable catch (interruptedexception e)

}

@override

protected object clone() throws clonenotsupportedexception

}

設計模式之原型模式

原型模式其實就是從乙個物件再建立乙個可定製的物件,而且不需要知道建立的細節。具體就是說通過複製或者轉殖乙個原型物件產生新的物件 轉殖物件 分為兩種 深複製或者淺複製,這兩種的主要區別是 在原型中如果有物件的引用,淺複製是將引用複製過來了,也就是淺複製和原型中的物件的引用相同,而深複製是將轉殖物件中引...

設計模式之原型模式

include include 此練習為原型模式方法的練習 原型模式揭示了在同一原型上可以通過複製使得 只需要例項化一次,再通過相應的類函式操作可以得到 同一原型下的不同的版本物件 此練習將考慮在實際開發中 比如 工作經歷也是作為乙個類被含在簡歷類中的情況 這情況將涉及到類的引用和深 淺複製 原型基...

設計模式之原型模式

原型模式的思想就是將乙個物件作為原型,對其進行複製 轉殖,產生乙個和原物件類似的新物件 複製過程可分為淺複製和深複製。淺複製是指直接呼叫父類 即object類 的clone方法 super.clone 該方法是本地 native 方法,呼叫該方法clone出來的新物件,基本資料型別的屬性變數是新建立...