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

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

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

    夢(mèng)幻之旅

    DEBUG - 天道酬勤

       :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      671 隨筆 :: 6 文章 :: 256 評(píng)論 :: 0 Trackbacks
    原型模式
         原型模式是在已指定對(duì)象的基礎(chǔ)上,然后通過(guò)拷貝這些原型對(duì)象創(chuàng)建新的對(duì)象。
    原型模式有兩個(gè)組成部份
    1.抽象原型
    2.具體原型
    例子:
    1.抽象原型
    package prototype;

    /**
     * <ul>
     * <li>Title:[Prototype]</li>
     * <li>Description: [抽象原型]</li>
     * <li>Copyright 2009 Upengs Co., Ltd.</li>
     * <li>All right reserved.</li>
     * <li>Created by [Huyvanpull] [2011-8-2]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
    @version 1.0  
     
    */

    public interface Prototype
    {   
        
    /**
         * <ul>
         * <li>Description:[原型接口聲明]</li>
         * <li>Created by [Huyvanpull] [2011-8-2]</li>
         * <li>Midified by [modifier] [modified time]</li>
         * </ul>
         * 
    @return
         * 
    @throws CloneNotSupportedException
         
    */

        
    public Object cloneMe() throws CloneNotSupportedException;
    }

    2.具體原型1
    package prototype;

    /**
     * <ul>
     * <li>Title:[Circle]</li>
     * <li>Description: [圓類]</li>
     * <li>Copyright 2009 Upengs Co., Ltd.</li>
     * <li>All right reserved.</li>
     * <li>Created by [Huyvanpull] [2011-8-2]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
     * 
    @version 1.0
     
    */

    public class Circle implements Prototype, Cloneable
    {
        
    /** 半徑 */
        
    private double radius;
        
        
    /**
         * <ul>
         * <li>Description:[構(gòu)造方法]</li>
         * <ul>
         * 
         * 
    @param radius
         
    */

        
    public Circle(double radius)
        
    {
            
    this.radius = radius;
        }

        
        
    /* (non-Javadoc)
         * @see prototype.Prototype#cloneMe()
         
    */

        
    public Object cloneMe() throws CloneNotSupportedException
        
    {
            Circle obj 
    = (Circle)clone();
            
    return obj;
        }

        
        
    public double getRadius()
        
    {
            
    return radius;
        }

        
        
    public void setRadius(double radius)
        
    {
            
    this.radius = radius;
        }

    }


    3.具體原型2
    package prototype;

    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.io.Serializable;

    /**
     * <ul>
     * <li>Title:[Triangle]</li>
     * <li>Description: [三角形,用序列化的方式復(fù)制]</li>
     * <li>Copyright 2009 Upengs Co., Ltd.</li>
     * <li>All right reserved.</li>
     * <li>Created by [Huyvanpull] [2011-8-2]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
     * 
    @version 1.0
     
    */

    @SuppressWarnings(
    "serial")
    public class Triangle implements Prototype, Serializable
    {
        
    /** a邊 */
        
    private double a;
        
        
    /** b邊 */
        
    private double b;
        
        
    /** c邊 */
        
    private double c;
        
        
    /**
         * <ul>
         * <li>Description:[測(cè)試信息]</li>
         * <li>Created by [Huyvanpull] [2011-8-2]</li>
         * <li>Midified by [modifier] [modified time]</li>
         * </ul>
         
    */

        
    public void getDebugInfo()
        
    {
            StringBuffer debuginfo 
    = new StringBuffer();
            debuginfo.append(
    "原實(shí)例三邊信息-> ");
            debuginfo.append(
    "a:").append(a).append("");
            debuginfo.append(
    "b:").append(a).append("");
            debuginfo.append(
    "c:").append(a);
            System.out.println(debuginfo);
        }

        
        
    /* (non-Javadoc)
         * @see prototype.Prototype#cloneMe()
         
    */

        
    public Object cloneMe() throws CloneNotSupportedException
        
    {
            Object obj 
    = null;
            
    try
            
    {
                ByteArrayOutputStream outOne 
    = new ByteArrayOutputStream();
                ObjectOutputStream outTwo 
    = new ObjectOutputStream(outOne);
                outTwo.writeObject(
    this);
                
                ByteArrayInputStream inOne 
    = new ByteArrayInputStream(outOne.toByteArray());
                ObjectInputStream inTwo 
    = new ObjectInputStream(inOne);
                obj 
    = inTwo.readObject();
            }

            
    catch(Exception ex)
            
    {
                ex.printStackTrace();
            }

            
    return obj;
        }

        
        
    public double getA()
        
    {
            
    return a;
        }

        
        
    public void setA(double a)
        
    {
            
    this.a = a;
        }

        
        
    public double getB()
        
    {
            
    return b;
        }

        
        
    public void setB(double b)
        
    {
            
    this.b = b;
        }

        
        
    public double getC()
        
    {
            
    return c;
        }

        
        
    public void setC(double c)
        
    {
            
    this.c = c;
        }

    }


    4.測(cè)試類
    package prototype;


    /**
     * <ul>
     * <li>Title:[Test]</li>
     * <li>Description: [測(cè)試類]</li>
     * <li>Copyright 2009 Upengs Co., Ltd.</li>
     * <li>All right reserved.</li>
     * <li>Created by [Huyvanpull] [2011-8-2]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
    @version 1.0  
     
    */

    public class Test
    {   
         
    public static void main(String[] args) throws CloneNotSupportedException
         
    {
             Circle circle 
    = new Circle(10);
             System.out.println(
    "原實(shí)例半徑: " + circle.getRadius());
             Circle copyCircle 
    = (Circle)circle.cloneMe();
             System.out.println(
    "復(fù)制例半徑: " + copyCircle.getRadius());
             copyCircle.setRadius(
    20);
             System.out.println(
    "原實(shí)例半徑: " + circle.getRadius());
             System.out.println(
    "復(fù)制例半徑: " + copyCircle.getRadius());
             
             Triangle triangle 
    = new Triangle();
             triangle.setA(
    10);
             triangle.setB(
    20);
             triangle.setC(
    30);
             triangle.getDebugInfo();
              
             Triangle copyTriangle 
    = (Triangle)triangle.cloneMe();
             copyTriangle.getDebugInfo();
             copyTriangle.setA(
    11);
             copyTriangle.setB(
    21);
             copyTriangle.setC(
    31);
             copyTriangle.getDebugInfo();
         }

    }


    總結(jié):原型模式在生成復(fù)雜對(duì)象比較苦難的環(huán)境中比較適用,通過(guò)克隆已有對(duì)象來(lái)實(shí)現(xiàn)創(chuàng)建新的對(duì)象,節(jié)省了時(shí)間和空間。
    posted on 2011-08-02 01:09 HUIKK 閱讀(220) 評(píng)論(0)  編輯  收藏 所屬分類: Design Patterns
    主站蜘蛛池模板: 永久久久免费浮力影院| 久久免费视频观看| 在线观看人成视频免费| 亚洲另类春色国产精品| 我们的2018在线观看免费高清| 久久亚洲国产伦理| 99久久人妻精品免费二区| 麻豆亚洲av熟女国产一区二| 13一14周岁毛片免费| 亚洲午夜精品在线| 四虎免费在线观看| 黄网站色视频免费看无下截| 免费**毛片在线播放直播| 边摸边吃奶边做爽免费视频网站 | 亚洲国产小视频精品久久久三级 | 日韩免费高清播放器| 亚洲日本精品一区二区| 在线精品一卡乱码免费| 亚洲欧美日韩中文字幕在线一区| 在线观着免费观看国产黄| xxxx日本在线播放免费不卡| 亚洲中文字幕不卡无码| 91精品免费观看| 亚洲欧美黑人猛交群| 亚洲国产精品日韩| 国产亚洲免费的视频看| 亚洲一区二区三区亚瑟 | 日韩免费在线视频| 亚洲美女视频一区二区三区| 最近2019中文字幕mv免费看| 精品成人一区二区三区免费视频| 久久国产成人精品国产成人亚洲| a级日本高清免费看| 久久亚洲最大成人网4438| 四虎影视永久免费观看地址| 99视频在线免费观看| 精品亚洲AV无码一区二区三区 | 亚洲精品国产高清嫩草影院| 日韩电影免费观看| 亚洲中文无码永久免费| 亚洲欧洲精品无码AV|