憨厚生

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

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

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

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

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

          以勺子為例:

          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;
            }
          }

          有個(gè)具體實(shí)現(xiàn)(ConcretePrototype):

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

           

          調(diào)用Prototype模式很簡單:

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

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

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

          posted on 2009-03-09 11:00 二胡 閱讀(154) 評論(0)  編輯  收藏 所屬分類: 設(shè)計(jì)相關(guān)
          主站蜘蛛池模板: 崇仁县| 乡城县| 永登县| 教育| 绥宁县| 高淳县| 禄丰县| 昌黎县| 亚东县| 大兴区| 景东| 新疆| 吉木萨尔县| 瑞安市| 新郑市| 建瓯市| 绥化市| 辉南县| 固阳县| 昌黎县| 富源县| 临颍县| SHOW| 洪湖市| 昔阳县| 鄂州市| 杭锦后旗| 嘉黎县| 萍乡市| 渭源县| 宿迁市| 建水县| 绍兴县| 彝良县| 阳高县| 遂昌县| 祁门县| 栖霞市| 鄂州市| 云梦县| 景德镇市|