我的漫漫程序之旅

          專注于JavaWeb開發(fā)
          隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0

          導(dǎo)航

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(39)

          隨筆檔案(43)

          文章分類(304)

          文章檔案(257)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          Java Prototype模式的學(xué)習(xí)(原型模式)

           原型模式定義: 用原型實(shí)例指定創(chuàng)建對象的種類,并且通過拷貝這些原型創(chuàng)建新的對象.

              Prototype模式允許一個對象再創(chuàng)建另外一個可定制的對象,根本無需知道任何如何創(chuàng)建的細(xì)節(jié),工作原理是:通過將一個原型對象傳給那個要發(fā)動創(chuàng)建的對象,這個要發(fā)動創(chuàng)建的對象通過請求原型對象拷貝它們自己來實(shí)施創(chuàng)建。

          如何使用? 因?yàn)镴ava中的提供clone()方法來實(shí)現(xiàn)對象的克隆,所以Prototype模式實(shí)現(xiàn)一下子變得很簡單.

          以勺子為例:

          package com.pattern.prototype;

          /**
           * 原型類(以湯匙為例) ,注意要實(shí)現(xiàn)Cloneable接口
           * 
           * 
          @author zdw
           * 
           
          */

          public abstract class AbstractSpoon implements Cloneable
          {
              
          public String spoonName;

              
          public String getSpoonName()
              
          {
                  
          return this.spoonName;
              }


              
          public void setSpoonName(String spoonName)
              
          {
                  
          this.spoonName = spoonName;
              }


              
          /**
               * 重寫clone()方法
               
          */

              @Override
              
          public Object clone()
              
          {
                  
          try
                  
          {
                      
          return super.clone();
                  }
           catch (CloneNotSupportedException e)
                  
          {
                      System.out.println(
          "此對象不支持復(fù)制");
                  }

                  
          return null;
              }

          }


          對原型的具體實(shí)現(xiàn):
          package com.pattern.prototype;

          /**
           * 給原型對象賦值
           * 
           * 
          @author zdw
           * 
           
          */

          public class SoupSpoon extends AbstractSpoon
          {
              
          public SoupSpoon()
              
          {
                  setSpoonName(
          "chinaDrong");
              }

          }


          測試類:
          package com.pattern.prototype;

          /*******************************************************************************
           * 測試類
           * 
           * 
          @author zdw
           * 
           
          */

          public class Client
          {
              
          public static void main(String[] args)
              
          {
                  AbstractSpoon spoon 
          = new SoupSpoon();
                  System.out.println(spoon.getSpoonName());
                  
          // 通過對象的clone()方法,即可獲得對象的一個copy.
                  AbstractSpoon spoon2 = (AbstractSpoon) spoon.clone();
                  System.out.println(spoon2.getSpoonName());
              }

          }

          當(dāng)然也可以結(jié)合工廠模式來創(chuàng)建AbstractSpoon實(shí)例。

          在Java中Prototype模式變成clone()方法的使用,由于Java的純潔的面向?qū)ο筇匦裕沟迷贘ava中使用設(shè)計(jì)模式變得很自然,兩者已經(jīng)幾乎是渾然一體了。這反映在很多模式上,如Interator遍歷模式。



          posted on 2008-05-26 09:39 々上善若水々 閱讀(1688) 評論(0)  編輯  收藏 所屬分類: 設(shè)計(jì)模式

          主站蜘蛛池模板: 辉县市| 五台县| 贵港市| 忻城县| 兴仁县| 驻马店市| 朝阳市| 连平县| 汽车| 电白县| 青海省| 孙吴县| 沁阳市| 金华市| 罗平县| 蓝田县| 阿坝县| 临高县| 海阳市| 商城县| 桓台县| 灌南县| 游戏| 六盘水市| 黄龙县| 临武县| 乌兰县| 晴隆县| 获嘉县| 青海省| 弋阳县| 长治市| 黔江区| 怀来县| 连州市| 会东县| 昌都县| 体育| 关岭| 开原市| 伊金霍洛旗|