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

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

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

    我的漫漫程序之旅

    專注于JavaWeb開發
    隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
    數據加載中……

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

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

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

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

    以勺子為例:

    package com.pattern.prototype;

    /**
     * 原型類(以湯匙為例) ,注意要實現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;
        }

    }


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

    }

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

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



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

    主站蜘蛛池模板: 国产成人免费a在线资源| 亚洲精品成人片在线观看精品字幕| 亚洲一区二区三区夜色| 中文字幕免费在线视频| 麻豆高清免费国产一区| 亚洲人成在线影院| 亚洲国产视频久久| 一边摸一边桶一边脱免费视频 | 久久青草国产免费观看| 精品国产_亚洲人成在线高清 | 国产又黄又爽又大的免费视频| 亚洲乱码中文字幕手机在线| 亚洲理论片在线观看| 亚洲免费一区二区| 国产男女爽爽爽爽爽免费视频| 国产啪亚洲国产精品无码| 插鸡网站在线播放免费观看| 亚洲AV无码一区二区乱子伦| 国产av无码专区亚洲av毛片搜| 亚洲国产一级在线观看| a级精品九九九大片免费看| 久久亚洲一区二区| 久青草视频97国内免费影视| 亚洲欧洲日产国产综合网| 青青青国产在线观看免费网站| 欧美日韩亚洲精品| 亚洲AV无码乱码国产麻豆| 一色屋成人免费精品网站| 黄网站在线播放视频免费观看| 成人性生交大片免费看午夜a| 精品女同一区二区三区免费播放| 最新国产AV无码专区亚洲| 91久久精品国产免费直播| 国产区图片区小说区亚洲区| 亚洲国产一成人久久精品| 午夜福利不卡片在线播放免费| 青青草97国产精品免费观看 | 伊人久久免费视频| 亚洲精品久久无码av片俺去也| 亚洲中文字幕无码中文字在线| 免费专区丝袜脚调教视频|