首頁  >  文章  >  Java  >  設計模式之原型模式實例教程

設計模式之原型模式實例教程

零下一度
零下一度原創
2017-06-27 10:26:331083瀏覽

定義(From 百度百科)
      以原型實例指定建立物件的種類,並且透過拷貝這些原型建立新的物件。

UML類別圖表:

     












#     

public class Client {public static void main(String[] args) {//        Director d = new Director(new ConcreteBuilder());//        d.construct();ConcretePrototype1 prototype = new ConcretePrototype1();for (int i = 0; i < 10; i++) {
            ConcretePrototype1 x = (ConcretePrototype1) prototype.clone();
            x.test1();
        }
    }
}public class Prototype  implements Cloneable {public Prototype clone() {
        Prototype prototype = null;try{
            prototype = (Prototype)super.clone();
        }catch(CloneNotSupportedException e){
            e.printStackTrace();
        }return prototype;
    }
}public class ConcretePrototype1 extends Prototype {public void test1() {
        System.out.println(this);
        System.out.println("123");
    }
}
##########各部分說明:######Prototype 原型類別實作Cloneable介面。 ###ConcretePrototype1 原型類別Prototype的子類別#########模式詳細說明:######透過複製複製一個物件實例###複製出來的新的物件複製原始實例的值# ########原型模式的注意事項:######    使用原型模式複製物件不會呼叫類別的建構方法。因為物件的複製是透過呼叫Object類別的clone方法來完成的,連存取權限都對原型模式無效。還記得單例模式嗎?在單例模式中,###只要將建構方法的存取權限設定為private型,就可以實作單例。但是clone方法直接無視構造方法的權限,所以,單例模式與原型模式是衝突的,使用時要特別注意。 ###     clone方法,執行的是淺拷貝,也就是說如果是引用類型的屬性,則它不會進行拷貝,而是只拷貝引用。 ############優缺點:######優點:###clone方法是由虛擬機器直接複製記憶體區塊執行,速度比new快很多###運行時取得對象而對應的狀態###缺點: ###Prototype必須實作clone方法,如果Prototype裡的屬性很多引用類型,甚至物件裡的應用,那就要遞歸實作clone方法,會很複雜,新增引用屬性時,會去更改clone方法的實作。 ###

以上是設計模式之原型模式實例教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn