我的漫漫程序之旅

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

          導航

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(39)

          隨筆檔案(43)

          文章分類(304)

          文章檔案(257)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          Java Prototype模式的學習(原型模式)

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

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

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

          以勺子為例:

          package com.pattern.prototype;

          /**
           * 原型類(以湯匙為例) ,注意要實現(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(
          "此對象不支持復制");
                  }

                  
          return null;
              }

          }


          對原型的具體實現(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());
              }

          }

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

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



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

          主站蜘蛛池模板: 鄱阳县| 桐柏县| 临武县| 凤阳县| 桃源县| 芒康县| 汪清县| 开化县| 四子王旗| 连州市| 桦川县| 屏南县| 华坪县| 正蓝旗| 永福县| 乌什县| 正定县| 文安县| 惠安县| 宝鸡市| 通江县| 永德县| 溆浦县| 遂昌县| 蒙山县| 二连浩特市| 绥芬河市| 伊金霍洛旗| 清水河县| 磴口县| 武强县| 济阳县| 营口市| 威远县| 牙克石市| 绥化市| 沭阳县| 米易县| 尚义县| 奉贤区| 宝清县|