1. 程式人生 > >jdk遇到設計模式之原型模式

jdk遇到設計模式之原型模式

這篇來看一下jdk中運用的原型模式。

Cloneable介面並沒有任何的方法,Cloneable是一個標誌介面。

但是並非實現Cloneable的介面都可以呼叫clone方法,因為Object中的clone方法修飾符是protected

所以要想在外部呼叫clone()需要重寫object的clone方法。

同時object中的clone方法是通過呼叫本地方法的實現的(並且是淺複製的)

那麼如果想實現深複製,應該如何編寫java程式碼呢。

1、自己new物件。在自己的clone方法裡面,該建立就建立,該賦值就賦值。

2、巧妙地利用序列化進行復制。

3、在clone中複製成員物件的時候也呼叫clone,進行層層複製。

由於object中的clone是native方法,原始碼解析部分就省略了。。