原型模式 詳解

2021-09-29 02:41:38 字數 1474 閱讀 3616

用乙個已經建立的例項作為原型,通過複製該原型物件來建立乙個和原型相同或相似的新物件。在這裡,原型例項指定了要建立的物件的種類。用這種方式建立物件非常高效,根本無須知道物件建立的細節。

1.淺拷貝

package com.moshi;

public class test

}class user implements cloneable

public string getname()

public void setname(string name)

public int getage()

public void setage(int age)

public book getbook()

public void setbook(book book)

@override

protected object clone() throws clonenotsupportedexception

}class book

public string getbookname()

public void setbookname(string bookname)

}

輸出結果:aa

二本書366712642*****==366712642

可以發現,兩個物件所依賴的物件的hashcode是同乙個物件,引用的記憶體位址還是同乙個。

2.深拷貝

package com.moshi;

public class test

}class user implements cloneable

public string getname()

public void setname(string name)

public int getage()

public void setage(int age)

public book getbook()

public void setbook(book book)

@override

protected object clone() throws clonenotsupportedexception

}class book implements cloneable

public string getbookname()

public void setbookname(string bookname)

@override

protected object clone() throws clonenotsupportedexception

}

輸出結果:

aa一本書

366712642*****==1829164700

可以發現,重寫clone方法後,兩個物件所依賴的物件的hashcode不一致了。則表示引用的記憶體位址不一致。

原型模式 詳解

用原型例項指定建立物件的種類,並通過拷貝這些原型建立新的物件 建立型模式 淺拷貝 使用乙個已知例項對新建立例項的成員變數逐個賦值 深拷貝 當乙個類的拷貝構造方法,不僅要複製物件的所有非引用成員變數值,還要為引用型別的成員變數建立新的例項,並且初始化為形式引數例項值 從網上找到的例圖 第一種建立物件方...

設計模式詳解 原型模式

是指原型例項指定建立物件的種類,並通過拷貝這些原型建立新的物件。而呼叫者不需要知道任何建立細節,不呼叫建構函式 其實就是如何快速構建物件的方法總結,比如簡單工廠將getter setter封裝到某個方法中 jdk提供實現cloneable介面,實現快速複製。當初在spring配置scope prot...

設計模式詳解 原型模式

原型模式 prototype pattern 是用於建立重複的物件,同時又能保證效能。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。這種模式是實現了乙個原型介面,該介面用於建立當前物件的轉殖。當直接建立物件的代價比較大時,則採用這種模式。例如,乙個物件需要在乙個高代價的資料庫操作...