原型模式其實就是實現對象的拷貝。但是對象的拷貝分爲深拷貝和淺拷貝。spa
任何對象都有從Object繼承過來的clone方法,默認是淺拷貝的,即拷貝時只會複製基本數據類型(包括字符串String),而且要注意拷貝的時候是不會調用構造方法的。而引用類型只是複製了引用,所以拷貝出來的對象和原來對象有着一樣的引用屬性,這樣在某種環境下會出問題。 對於私有屬性,應該是隻屬於該對象的,和其餘對象無關,而淺拷貝以後兩個對象有着同一個引用的私有屬性,那麼這個私有的意義何在?對象
所以,在重寫父類的 clone方法時要注意同時把引用屬性也從新複製一份,賦給拷貝後的對象。繼承