Java 設計模式——原型模式(Prototype)

來源:互聯網
上載者:User

標籤:設計模式   java   原型模式   

原型模式屬於對象的建立模式。通過給出一個原型對象來指明所有建立對象的類型,然後用複製這個原型對象的辦法建立出更多同類型的對象。
原型模式有簡單形式和登機形式兩種表現 形式。
簡單形式的原始模型模式
簡單形式UML類圖如下:

原型模式的角色有
用戶端角色(ClientPro):
抽象原型角色(ProtoType):
具體原型角色(ConcreteProtoType):被複製的對象
代碼如下:

public interface ProtoType {    /**     * 根據自身複製出新的對象     * @author 付玉偉     * @time 2015-3-25 下午08:40:01     * @return     */    public Object clone();}public class ConcreteProtoType1 implements ProtoType {    public ProtoType clone(){        // 複製自己        ProtoType prototype = new ConcreteProtoType1();        return prototype;    }}public class ConcreteProtoType2 implements ProtoType {    /**     * 複製自己     */    public Object clone(){        ProtoType protoType = new ConcreteProtoType2();        return protoType;    }}public class ClientPro {    /**     * 持有原型對象介面     */    private ProtoType protoType;    /**     * 傳入需要的原型介面     * @param protoType     */    public ClientPro(ProtoType protoType){        this.protoType = protoType;    }    public void operation(ProtoType p){        ProtoType copypt = (ProtoType) p.clone();    }}

登記形式的原始模型模式
UML類圖如下:

代碼可以根據類圖來看
兩種形式的比較:
如果需要建立的原型對象資料較少而且比較固定的話,可以採取第一種形式,在這種情況下,原型對象的引用可以由用戶端自己儲存。
如果要建立的原型對象資料不固定,可以採取第二種方式。這種情況下,用戶端並不儲存對原型對象的引用,這個任務被交給管理員對象。在複製一個原型對象之前,用戶端可以查看管理員對象是否已經有一個滿足要求的原型。如果有,可以直接從管理員類取得這個對象引用,如果沒有,用戶端就需要自行複製此原型對象。
在什麼情況下使用原型模式?
假設一個系統的產品類是動態載入的,而且產品類具有一定等級結構。這個時候如果採取原廠模式的話,工廠類不得不具有一個相應的等級結構。而產品類的等級結構一旦變化,工廠類的等級結構就不得不變化,對於經常變的系統採用原廠模式就不方便了。
這時候如果採用原型模式,給每一個產品類配備一個複製方法,可以避免使用原廠模式帶來的固定等級結構。
原型模式的優點:
1、允許動態增加或減少產品類
2、提供簡化的建立結構
3、具有給一個應用軟體動態載入新功能的能力
4、產品類不需要非得有任何實現確定的等級結構

Java 設計模式——原型模式(Prototype)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.