欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

java如何實(shí)現(xiàn)原型模式

這篇文章主要介紹了java如何實(shí)現(xiàn)原型模式,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

美蘭網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司于2013年開始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。

定義:

        通過復(fù)制現(xiàn)有的對(duì)象實(shí)例來創(chuàng)建新的對(duì)象實(shí)例。

實(shí)現(xiàn):

實(shí)現(xiàn)Cloneable接口:

        Cloneable接口的作用是在運(yùn)行時(shí)通知虛擬機(jī)可以安全地在實(shí)現(xiàn)了此接口的類上使用clone方法。在java虛擬機(jī)中,只有實(shí)現(xiàn)了這個(gè)接口的類才可以被拷貝,否則在運(yùn)行時(shí)會(huì)拋出CloneNotSupportedException異常。

重寫Object類中的clone方法:

        Java中,所有類的父類都是Object類,Object類中有一個(gè)clone方法,作用是返回對(duì)象的一個(gè)拷貝,但是其作用域protected類型的,一般的類無法調(diào)用,因此,原型類需要將clone方法的作用域修改為public類型。

示例:

例如,對(duì)于拿郵件發(fā)邀請(qǐng)函,郵件類大部分內(nèi)容都是一樣的:邀請(qǐng)?jiān)伞⑾嘌攸c(diǎn),相聚時(shí)間等等,但對(duì)于被邀請(qǐng)者的名稱和發(fā)送的郵件地址是不同的。

定義Mail類:

public class Mail implements Cloneable {  
  private String receiver;  
  private String subject;  
  private String content;  
  private String tail;  
  public Mail(EventTemplate et) {    
    this.tail = et.geteventContent();    
    this.subject = et.geteventSubject();
  }  
  @Override
  public Mail clone() {
    Mail mail = null;    
  try {
      mail = (Mail) super.clone();      
    } catch (CloneNotSupportedException e) {      
    // TODO Auto-generated catch block
      e.printStackTrace();
    }    return mail;
  }
//get、set.....
}

測(cè)試方法:

public static void main(String[] args) {
  int i = 0;
  int MAX_COUNT = 10;
  EventTemplate et = 
new EventTemplate("邀請(qǐng)函(不變)", "婚嫁生日啥的....(不變部分)");
  Mail mail = new Mail(et);  
  while (i < MAX_COUNT) {
    Mail cloneMail = mail.clone();
    cloneMail.setContent("XXX先生(女士)(變化部分)"
   + mail.getTail());
    cloneMail.setReceiver("每個(gè)人的郵箱地址...com(變化部分)");
    sendMail(cloneMail);
    i++;
  }

}

優(yōu)點(diǎn):

        1、使用原型模型創(chuàng)建一個(gè)對(duì)象比直接new一個(gè)對(duì)象更有效率,因?yàn)樗苯硬僮鲀?nèi)存中的二進(jìn)制流,特別是復(fù)制大對(duì)象時(shí),性能的差別非常明顯。
        2、隱藏了制造新實(shí)例的復(fù)雜性,使得創(chuàng)建對(duì)象就像我們?cè)诰庉嬑臋n時(shí)的復(fù)制粘貼一樣簡(jiǎn)單。

缺點(diǎn):

        1、由于使用原型模式復(fù)制對(duì)象時(shí)不會(huì)調(diào)用類的構(gòu)造方法,所以原型模式無法和單例模式組合使用,因?yàn)樵皖愋枰獙lone方法的作用域修改為public類型,那么單例模式的條件就無法滿足了。
        2、使用原型模式時(shí)不能有final對(duì)象。
        3、Object類的clone方法只會(huì)拷貝對(duì)象中的基本數(shù)據(jù)類型,對(duì)于數(shù)組,引用對(duì)象等只能另行拷貝。這里涉及到深拷貝和淺拷貝的概念。

深拷貝與淺拷貝:

淺拷貝:

        將一個(gè)對(duì)象復(fù)制后,基本數(shù)據(jù)類型的變量都會(huì)重新創(chuàng)建,而引用類型,指向的還是原對(duì)象所指向的(這樣不安全)。

深拷貝:

        將一個(gè)對(duì)象復(fù)制后,不論是基本數(shù)據(jù)類型還有引用類型,都是重新創(chuàng)建的。

那么深拷貝如何具體實(shí)現(xiàn)呢?

繼續(xù)上面的例子,增加了一個(gè)ArrayList屬性。

private String receiver;
private String subject;
private String content;
private String tail;
private ArrayList<String> ars;

此時(shí),單mail = (Mail) super.clone();無法將ars指向的地址區(qū)域改變,必須另行拷貝:

try {
    mail = (Mail) super.clone();    
    mail.ars = (ArrayList<String>)this.ars.clone();
   } catch (CloneNotSupportedException e) {
     e.printStackTrace();
}

適用場(chǎng)景:

        1、復(fù)制對(duì)象的結(jié)構(gòu)和數(shù)據(jù)。
        2、希望對(duì)目標(biāo)對(duì)象的修改不影響既有的原型對(duì)象。
        3、創(chuàng)建一個(gè)對(duì)象的成本比較大。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“java如何實(shí)現(xiàn)原型模式”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

文章題目:java如何實(shí)現(xiàn)原型模式
網(wǎng)頁路徑:http://aaarwkj.com/article20/iijcco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、Google、自適應(yīng)網(wǎng)站企業(yè)建站、網(wǎng)站收錄、網(wǎng)頁設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
日本新任女教师在线播放| 欧美三级在线完整版免费| 国内一级片内射视频播放| 亚洲综合激情另类专区| 国产色综合一区二区| 另类视频在线免费观看| 日韩国产一区二区在线观看| 国产精品久久久久久久亚洲| 蜜桃视频中文字幕二区三区 | 高清不卡av在线播放| 五月婷婷六月丁香在线观看| 日韩亚洲在线中文字幕| 老司机看片午夜久久福利| 极品美女粉嫩啪啪高潮| 欧美一区二区专区在线| 在线看电影亚洲一区| 尤物天堂av一区二区| 亚洲香蕉av一区二区蜜桃| 九九视频免费观看5| 在线中文字幕av电影| 成人福利在线观看免费视频| 国产伦理自拍视频在线观看| 韩国三级福利在线观看| 亚洲国产第一尤物视频| 国产亚洲男人av一区三区| 久久99国产综合精品女同| 蜜臀av人妻一区二区三区| 国产精品中文字幕第一区| 欧美激情日韩精品久久久| av一区二区三区网站| 四虎精品视频在线免费| 在线高清视频无卡不码| 久久国产精品亚洲看片| 日韩欧美人妻一二三四区| 91午夜福利视频免费播放| 国产在线一区二区三区观看| 加勒比久久精品网址系列| 日韩欧美国产精品福利| 在线免费观看91亚洲| av二区不卡国产精品| 国产免费高清视频成人|