隨筆 - 40, 文章 - 0, 評論 - 20, 引用 - 0
          數(shù)據(jù)加載中……

          23種面向?qū)ο蟮脑O(shè)計模式----Prototype模式


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

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

          如何使用?
          因為Java中的提供clone()方法來實現(xiàn)對象的克隆,所以Prototype模式實現(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;
            }
          }

          有個具體實現(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實例。

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



          原文出處:http://www.jdon.com/designpatterns/prototype.htm

          看看寫的很好,就拿來引用一下,不用自己寫的那么累^_^.

          posted on 2005-11-20 20:32 月亮 閱讀(206) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 贵阳市| 麟游县| 正宁县| 海林市| 榆中县| 天门市| 玉树县| 潍坊市| 临桂县| 马公市| 营口市| 宜章县| 蓝山县| 昌都县| 赫章县| 宜川县| 威信县| 南川市| 宝丰县| 盐山县| 定西市| 商城县| 鸡西市| 彝良县| 莱西市| 屏东市| 平顶山市| 普兰店市| 始兴县| 巴马| 嘉兴市| 六枝特区| 柳河县| 永兴县| 武威市| 临汾市| 绥中县| 砀山县| 如东县| 闵行区| 阜新市|