原型模式

概述

  • 原型模式是從一個對象出發(fā)得到一個和自己有相同狀態(tài)的新對象的成熟模式,該模式的關(guān)鍵是將一個對象定義為原型,并為其提供復(fù)制自己的方法。

原型模式的結(jié)構(gòu)

原型模式的結(jié)構(gòu)中包括兩種角色。

  • 抽象原型(Prototype)
  • 具體原型(ConcretePrototype)

抽象原型(Prototype)

  • 一個接口。
  • 負(fù)責(zé)定義對象復(fù)制自身的方法。

具體原型(ConcretePrototype)

  • 實現(xiàn)Prototype接口的類。
  • 具體原型實現(xiàn)抽象原型中的方法,以便所創(chuàng)建的對象調(diào)用該方法復(fù)制自己。

原型模式的優(yōu)點

  • 當(dāng)創(chuàng)建類的新實例的代價更大時,使用原型模式復(fù)制一個已有的實例可以提高創(chuàng)建新實例的效率。
  • 可以動態(tài)地保存當(dāng)前對象的狀態(tài)。在運行時,可以隨時使用對象流保存當(dāng)前對象的一個復(fù)制品。
  • 可以在運行時創(chuàng)建新的對象,而無須創(chuàng)建一系列類和繼承結(jié)構(gòu)。
  • 可以動態(tài)地添加、刪除原型的復(fù)制品。

適合原型模式的情景

  • 程序需要從一個對象出發(fā),得到若干個和其狀態(tài)相同,并可獨立變化其狀態(tài)的對象時。
  • 當(dāng)對象的創(chuàng)建需要獨立于它的構(gòu)造過程和表示時。
  • 一個類創(chuàng)建實例狀態(tài)不是很多,那么久可以將這個類的一個實例定義為原型,那么通過復(fù)制該原型得到新的實例可能比重新使用類的構(gòu)造方法創(chuàng)建新實例更方便。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容