<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我的漫漫程序之旅

    專注于JavaWeb開發(fā)
    隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
    數(shù)據(jù)加載中……

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

    }

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

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



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

    主站蜘蛛池模板: 久草免费手机视频| 卡1卡2卡3卡4卡5免费视频| 亚洲校园春色小说| 日韩黄色免费观看| 免费黄网站在线看| 亚洲国产视频久久| 色噜噜亚洲精品中文字幕| 国产男女爽爽爽爽爽免费视频| 亚洲精华国产精华精华液好用 | 中文无码日韩欧免费视频| 亚洲精彩视频在线观看| 国产人妖ts在线观看免费视频| 丁香花在线视频观看免费| 在线aⅴ亚洲中文字幕| 国产亚洲一区二区手机在线观看| 国产人在线成免费视频| 9i9精品国产免费久久| 亚洲日韩精品国产一区二区三区| 亚洲日产韩国一二三四区| 大学生a级毛片免费观看| 精品四虎免费观看国产高清午夜| 亚洲国产精品日韩av不卡在线| 亚洲AV无码久久| xvideos亚洲永久网址| 久久精品网站免费观看| 免费在线观看一级片| 美女被爆羞羞网站在免费观看| 亚洲国产精品人久久电影| 亚洲精品乱码久久久久久| 国产在线观看免费视频播放器| 91在线手机精品免费观看| 二个人看的www免费视频| 蜜臀亚洲AV无码精品国产午夜.| 亚洲中文无码av永久| 久久精品国产亚洲AV网站| 在线观看国产区亚洲一区成人| 国产网站免费观看| 67194成是人免费无码| 国产精品成人免费福利| 国产精品免费大片| 中文在线观看永久免费|