日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

[设计模式]原型模式

發布時間:2025/6/15 asp.net 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [设计模式]原型模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介


原型模式 (Prototype)用原型實例指定創建對象的種類,并且通過拷貝這些原型創建新的對象。 原型模式是一種對象創建型模式?(可參考?設計模式 創建型模式)。


結構


圖-原型模式結構圖 Prototype:聲明一個克隆自身的接口。
ConcretePrototype實現克隆自身的具體操作。
Client調用 Prototype 來克隆自身,從而創建一個新對象。


動機


當要實例化的類是在運行時刻指定時,例如,通過動態裝載。
為了避免創建一個與產品類層次平行的工廠類層次時。
當一個類的實例只能有幾個不同狀態組合中的一種時。建立相應數目的原型并克隆它們可能比每次用合適的狀態手工實例化該類更方便一些。?

?

淺拷貝與深拷貝


淺拷貝是指當對象的字段值被復制時,字段引用的對象不會被復制。
例如:如果一個對象有一個指向字符串的字段,并且我們對該對象做了一個淺拷貝,那麼兩個對象將引用同一個字符串。
深拷貝是指當一個類擁有資源,當這個類的對象發生復制過程的時候,資源重新分配,這個過程就是深拷貝。

實例


原型模式主要用于對象的復制,它的核心是就是類圖中的原型類Prototype。Prototype類需要具備以下兩個條件:
  • 實現Cloneable接口。在java語言有一個Cloneable接口,它的作用只有一個,就是在運行時通知虛擬機可以安全地在實現了此接口的類上使用clone方法。在java虛擬機中,只有實現了這個接口的類才可以被拷貝,否則在運行時會拋出CloneNotSupportedException異常。
  • 重寫Object類中的clone方法。Java中,所有類的父類都是Object類,Object類中有一個clone方法,作用是返回對象的一個拷貝,但是其作用域protected類型的,一般的類無法調用,因此,Prototype類需要將clone方法的作用域修改為public類型。
  • 原型模式是一種比較簡單的模式,也非常容易理解,實現一個接口,重寫一個方法即完成了原型模式。在實際應用中,原型模式很少單獨出現。經常與其他模式混用,他的原型類Prototype也常用抽象類來替代。?

    代碼

    class?Prototype?implements?Cloneable?{
    ????public?Prototype?clone()?{
    ????????Prototype?prototype?=?null;
    ????????try?{
    ????????????prototype?=?(Prototype)super.clone();
    ????????}?catch?(CloneNotSupportedException?e)?{
    ????????????e.printStackTrace();
    ????????}
    ????????return?prototype;
    ????}
    }

    class?ConcretePrototype?extends?Prototype?{
    ????public?void?show()?{
    ????????System.out.println("原型模式實現類");
    ????}
    }

    public?class?PrototypePattern?{
    ????public?static?void?main(String[]?args)?{
    ????????ConcretePrototype?cp?=?new?ConcretePrototype();
    ????????for(int?i=0;?i<?10;?i++){??
    ????????????ConcretePrototype?clonecp?=?(ConcretePrototype)cp.clone();??
    ????????????clonecp.show();??
    ????????}??
    ????}
    }

    本文轉自靜默虛空博客園博客,原文鏈接:http://www.cnblogs.com/jingmoxukong/p/4218556.html,如需轉載請自行聯系原作者

    總結

    以上是生活随笔為你收集整理的[设计模式]原型模式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。