憨厚生

          ----Java's Slave----
          ***Java's Host***

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            165 隨筆 :: 17 文章 :: 90 評論 :: 0 Trackbacks
          轉  http://www.jdon.com/designpatterns/prototype.htm

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

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

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

          以勺子為例:

          public abstract class AbstractSpoon implements Cloneable
          {
            String spoonName;

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

            public Object clone()
            {
              Object object = null;
              try {
                object = super.clone();
              } catch (CloneNotSupportedException exception) {
                System.err.println("AbstractSpoon is not Cloneable");
              }
              return object;
            }
          }

          有個具體實現(ConcretePrototype):

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

           

          調用Prototype模式很簡單:

          AbstractSpoon spoon = new SoupSpoon();
          AbstractSpoon spoon2 = spoon.clone();

          當然也可以結合工廠模式來創建AbstractSpoon實例。

          在Java中Prototype模式變成clone()方法的使用,由于Java的純潔的面向對象特性,使得在Java中使用設計模式變得很自然,兩者已經幾乎是渾然一體了。這反映在很多模式上,如Interator遍歷模式。

          posted on 2009-03-09 11:00 二胡 閱讀(148) 評論(0)  編輯  收藏 所屬分類: 設計相關
          主站蜘蛛池模板: 英吉沙县| 湟源县| 萝北县| 嘉峪关市| 沾益县| 四会市| 寻甸| 宜宾县| 克什克腾旗| 施秉县| 阿拉善右旗| 舟曲县| 城固县| 白沙| 普定县| 循化| 泉州市| 龙海市| 延边| 五家渠市| 永兴县| 舒兰市| 安乡县| 乐安县| 阳原县| 锦屏县| 天津市| 马尔康县| 昆明市| 华阴市| 萍乡市| 泸州市| 娄烦县| 新昌县| 巴马| 洛浦县| 吉林省| 安庆市| 安岳县| 宜都市| 兴海县|