Java設計模式---原型模式
Java設計模式---原型模式
辰兮要努力 2020-06-02 12:04:32 70 收藏 2 原力計劃
分類專欄: 設計模式
文章標籤: 資料庫 java 設計模式 面試 經驗分享
版權宣告:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結和本宣告。
本文連結:https://blog.csdn.net/weixin_45393094/article/details/106492207
收起
你好我是辰兮,很高興你能來閱讀,本篇給你介紹Java設計模式之原型模式,透過簡單的案例給你講解,分享給初學者,大家一起進步。
1.JAVA基礎面試常考問題 : JAVA面試基礎常考題彙集
2.JAVA面試SSM框架常考 :JAVA框架面試題彙集
文章目錄
一、序言
二、原型模式的定義與特點
三、原型模式的結構與實現
一、序言
在有些系統中,存在大量相同或相似物件的建立問題,如果用傳統的建構函式來建立物件,會比較複雜且耗時耗資源,用原型模式生成物件就很高效,就像孫悟空拔下猴毛輕輕⼀吹就變出很多孫悟空⼀樣簡單。
二、原型模式的定義與特點
原型(Prototype)模式的定義如下:
用⼀個已經建立的例項作為原型,透過複製該原型物件來建立⼀個和原型相同或相似的新物件。
在這⾥,原型例項指定了要建立的物件的種類。⽤這種⽅式建立物件⾮常⾼效,根本⽆須知道物件建立的細節。
例如,Windows 作業系統的安裝通常較耗時,如果複製就快了很多。在⽣活中複製的例⼦⾮常多,這⾥不⼀⼀列舉了。
三、原型模式的結構與實現
由於 Java 提供了物件的 clone() ⽅法,所以⽤ Java 實現原型模式很簡單。
1、模式的結構
原型模式包含以下主要⻆⾊。
抽象原型類:規定了具體原型物件必須實現的接⼝。
具體原型類:實現抽象原型類的 clone() ⽅法,它是可被複制的物件。
訪問類:使⽤具體原型類中的 clone() ⽅法來複制新的物件。
2、模式的實現
原型模式的克隆分為淺克隆和深克隆,Java 中的 Object 類提供了淺克隆的 clone() ⽅法,具體原型類只要實現 Cloneable 接⼝就可實現物件的淺克隆,這⾥的 Cloneable 接⼝就是抽象原型類。淺複製實現Cloneable,重寫,深複製是透過實現Serializable讀取二進位制流。
首先我們常見一個類繼承Cloneable介面,然後重寫裡面的clone方法
//具體原型類
public class Realizetype implements Cloneable
{
Realizetype()
{
System.out.println("具體原型建立成功!");
}
public Object clone() throws CloneNotSupportedException
{
System.out.println("具體原型複製成功!");
return (Realizetype)super.clone();
}
}
測試類
//原型模式的測試類
public class PrototypeTest {
public static void main(String[] args)throws CloneNotSupportedException {
Realizetype obj1=new Realizetype();
Realizetype obj2=(Realizetype)obj1.clone();
System.out.println("obj1==obj2?"+(obj1==obj2));
}
}
具體原型建立成功!
具體原型複製成功!
obj1==obj2?false
實現克隆操作,繼承Cloneable,重寫clone()方法。
原型模式同樣用於隔離類物件的使用者和具體型別(易變類)之間的耦合關係,它同樣要求這些“易變類”擁有穩定的介面。
3、原型模式的應用場景
①物件之間相同或相似,即只是個別的幾個屬性不同的時候。
②物件的建立過程比較麻煩,但複製比較簡單的時候。
public class Citation implements Cloneable {
String name;
String info;
String college;
public Citation(String name, String info, String college) {
this.name = name;
this.info = info;
this.college = college;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public String getCollege() {
return college;
}
public void setCollege(String college) {
this.college = college;
}
void display()
{
System.out.println(name+info+college);
}
public Object clone() throws CloneNotSupportedException
{
System.out.println("獎狀拷⻉成功!");
return (Citation)super.clone();
}
}
//原型模式的測試類
public class PrototypeTest {
public static void main(String[] args)throws CloneNotSupportedException {
Citation obj1=new Citation("盧本偉","同學:在2020學年獲得一等獎學金","武漢大學");
obj1.display();
Citation obj2=(Citation) obj1.clone();
obj2.setName("PDD");
obj2.display();
}
}
盧本偉同學:在2020學年獲得一等獎學金武漢大學
獎狀拷⻉成功!
PDD同學:在2020學年獲得一等獎學金武漢大學
①原型模式(Prototype Pattern)用於建立重複的物件,同時又能保證效能。
②它屬於建立型設計模式,它提供了一種建立物件的最佳方法。
③這種模式是實現了一個原型介面,該介面用於建立當前物件的克隆。當直接建立物件的代價比較大時,則採用這種模式。
④例如,一個物件需要在一個高代價的資料庫操作之後被建立。我們可以快取該物件,在下一個請求時返回它的克隆,在需要的時候更新資料庫,以此來減少資料庫呼叫。
————————————————
版權宣告:本文為CSDN博主「辰兮要努力」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/weixin_45393094/article/details/106492207
:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69971700/viewspace-2696110/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java設計模式-原型模式Java設計模式原型
- java設計模式—原型模式Java設計模式原型
- Java設計模式之(四)——原型模式Java設計模式原型
- 設計模式(Java語言)- 原型模式設計模式Java原型
- 設計模式-原型模式設計模式原型
- 設計模式 —— 原型模式設計模式原型
- 設計模式(原型模式)設計模式原型
- 設計模式:原型模式設計模式原型
- 重學 Java 設計模式:實戰原型模式Java設計模式原型
- java23種設計模式——四、原型模式Java設計模式原型
- java中23種設計模式--原型模式(Portotype)Java設計模式原型
- 設計模式之原型模式設計模式原型
- 設計模式-原型模式(Prototype)設計模式原型
- 設計模式【5】-- 原型模式設計模式原型
- 設計模式(三)——原型模式設計模式原型
- 23種設計模式(八)-原型設計模式設計模式原型
- 設計模式之原型設計模式原型
- 極簡設計模式-原型模式設計模式原型
- GoLang設計模式05 - 原型模式Golang設計模式原型
- 設計模式--原型模式(Prototype Pattern)設計模式原型
- go設計模式之原型模式Go設計模式原型
- golang設計模式之原型模式Golang設計模式原型
- 設計模式入門:原型模式設計模式原型
- 【設計模式(四)】建立型模式--原型模式設計模式原型
- 設計模式 #3 (原型模式、建造者模式)設計模式原型
- 設計模式--原型模式及其程式設計思想設計模式原型程式設計
- Java進階篇設計模式之三 ----- 建造者模式和原型模式Java設計模式原型
- 23種設計模式-原型模式(3)設計模式原型
- 《設計模式 》 - 4. 原型模式( Prototype )設計模式原型
- Rust語言之GoF設計模式:原型模式RustGo設計模式原型
- C#設計模式-原型模式(Prototype Pattern)C#設計模式原型
- 設計模式快速學習(五)原型模式設計模式原型
- 設計模式:原型模式介紹 && 原型模式的深拷貝問題設計模式原型
- Java設計模式——模板設計模式Java設計模式
- Java設計模式-代理模式Java設計模式
- Java設計模式——命令模式Java設計模式
- Java設計模式—代理模式Java設計模式
- 重溫23種設計模式(11):原型模式設計模式原型