原型模式--建立型模式
阿新 • • 發佈:2018-11-08
實現原理
原型模式的工作原理很簡單:將一個原型物件傳給那個要發動建立的物件,這個要發動建立的物件通過請求原型物件拷貝自己來實現建立過程。由於在軟體系統中我們經常會遇到需要建立多個相同或者相似物件的情況,因此原型模式在真實開發中的使用頻率還是非常高的。原型模式是一種“另類”的建立型模式,建立克隆物件的工廠就是原型類自身,工廠方法由克隆方法來實現。
注意點:需要注意的是通過克隆方法所建立的物件是全新的物件,它們在記憶體中擁有新的地址。
Java語言中常用的克隆實現方法
1.通用實現方法
通用的克隆實現方法是在具體原型類的克隆方法中例項化一個與自身型別相同的物件並將其返回,並將相關的引數傳入新建立的物件中,保證它們的成員屬性相同。
示意程式碼如下所示:
class ConcretePrototype implements Prototype
{
private String attr; //成員屬性
public void setAttr(String attr)
{
this.attr = attr;
}
public String getAttr()
{
return this.attr;
}
public Prototype clone() //克隆方法
{
Prototype prototype = new ConcretePrototype(); //建立新物件
prototype.setAttr(this.attr);
return prototype;
}
}
2.使用java中的clone()方法實現。
一般而言,Java語言中的clone()方法滿足:
(1) 對任何物件x,都有x.clone() != x,即克隆物件與原型物件不是同一個物件;
(2) 對任何物件x,都有x.clone().getClass() == x.getClass(),即克隆物件與原型物件的型別一樣;
(3) 如果物件x的equals()方法定義恰當,那麼x.clone().equals(x)應該成立。
為了獲取物件的一份拷貝,我們可以直接利用Object類的clone()方法,具體步驟如下:
(1) 在派生類中覆蓋基類的clone()方法,並宣告為public;
(2) 在派生類的clone()方法中,呼叫super.clone();
(3)派生類需實現Cloneable介面。
附錄: