一、什么是原型模式
原型模式(Prototype Pattern)用于創(chuàng)建重復(fù)的對象,同時(shí)又能保證性能。它屬于創(chuàng)建型設(shè)計(jì)模式,它提供了一種創(chuàng)建對象的最佳方法。
在使用原型模式時(shí),我們需要首先創(chuàng)建一個(gè)原型對象,再通過復(fù)制這個(gè)原型對象來創(chuàng)建更多同類型的對象。一般這個(gè)原型對象的實(shí)例化很復(fù)雜,需要消耗很多的硬件資源或者數(shù)據(jù)資源。
二、為什么使用原型模式
現(xiàn)在一般會使用new關(guān)鍵字指定類名生成類的實(shí)例(PS:我們以前使用java.lang.Cloneable的一個(gè)很大原因是使用new創(chuàng)建對象的速度相對來說會慢一些,隨著JVM性能的提升,new的速度和Object的clone()方法的速度差不多了)。
但下面這些情況下,就需要根據(jù)現(xiàn)有的實(shí)例來生成新的實(shí)例:
1、對象種類繁多,無法將他們整合到一個(gè)類的時(shí)候;
2、難以根據(jù)類生成實(shí)例時(shí);
3、想解耦框架與生成的實(shí)例時(shí)。
三、原型模式的淺拷貝和深拷貝
3.1、淺拷貝
只拷貝基本數(shù)據(jù)類型,對于對象屬性拷貝其中的引用地址
實(shí)現(xiàn)步驟:
1、實(shí)現(xiàn)Cloneable接口
2、實(shí)現(xiàn)clone方法

總結(jié):
淺拷貝:復(fù)制基本數(shù)據(jù)類型,引用類型沒有進(jìn)行復(fù)制
3.2、深拷貝
復(fù)制基本數(shù)據(jù)類型和引用類型
實(shí)現(xiàn)步驟:
1、實(shí)現(xiàn)Cloneable接口
2、實(shí)現(xiàn)clone方法

四、原型模式的優(yōu)缺點(diǎn)
4.1、優(yōu)點(diǎn)
1、抽象出共同點(diǎn),僅需要修改對象間的不同點(diǎn)
2、大大減少JVM創(chuàng)建對象的時(shí)間