經過克隆一個已存在的實例,來"實例化"一個新的實例。對象
若是存在一個實例,它的狀態和方法與將要實例化的一個新的實例很接近,那麼與其經過類模版和大量的初始化參數去實例化還不如直接克隆這個已存在的實例,從而獲得一個新的實例。這個已存在的實例,自身須要提供一個克隆本身的方法。原型
若是實例內部的構造過於複雜,且簡單的淺複製方式沒法知足克隆的要求。那麼實現一個複雜的克隆方法的代價,可能會大於組織初始化參數的代價。這種狀況下,應用原型模式就不合適了。方法
原型模式能夠被理解爲使用簡單的方案同時實現了面向對象中的「子類化」和「實例化」。在靜態語言中,由於沒法在運行時爲對象增長屬性和方法,因此應用原型模式只體現了實例化的做用。而在動態語言中,原型模式的威力被充分地體現了出來。經過動態增長屬性和方法,在動態語言中即便沒有類的存在,也不影響對象的建立。模版