GoF23 原型(Prototype)模式

2021-10-12 10:10:26 字數 2646 閱讀 6905

目標之一:提高程式的可復用性

有哪些功能可以被擴充套件?

擴充套件功能時必須修改哪些地方?

有哪些類不需要修改?

原型模式:用乙個已經建立的例項作為原型,通過複製該原型來建立乙個相似的物件。

public

class

song

implements

cloneable

public

void

setname

(string name)

public

localdate

getdate()

public

void

setdate

(localdate date)

public

song

(string name,

localdate localdate)

public

song()

@override

protected

object

clone()

throws

clonenotsupportedexception

@override

public

string

tostring()

';}}

public

class

test

}

輸出結果:

第二人生,2020-12-19建立成功!

歌曲複製成功!

song

song

false

該例子的類建立例項的過程還是相對比較簡單的物件,若遇到類的建立過程比較複雜的情況,則需要建立相似物件的過程就相對比較困難了。

生活中也有類似例子,比如:印表機影印相對比較複雜的文件、圖形編輯器編輯了乙個複雜的圖形,若此時需要乙個類似的影象等。

此時就可以使用原型設計模式建立複雜物件。

uml類圖

}執行結果

設計模式是內功,需要一直修煉!

GoF23 原型模式

以轉殖羊為例,對比輸出原型和轉殖物件的位址與值的差異 1.新建羊類實現cloneable介面並重寫object中的clone方法,自帶名稱和生日屬性,提供set和get方法。實現轉殖介面並重寫object的clone方法 author wangyds date 2019 5 20 22 10 pub...

GOF23 原型模式

淺拷貝 具體 實現 public class sheep implements cloneable public string getname public void setname string name public intgetage public void setage int age pu...

GOF23 設計模式

design patterns elements of reusable object oriented software 即後述 設計模式 一書 由 erich gamma richard helm ralph johnson 和 john vlissides 合著 addison wesley,...