設(shè)計模式—原型

  • 特點:
  1. 原型模式是一種創(chuàng)建模式
  2. 原型模式適用于構(gòu)建較復雜隘击,耗時較長的對象
  3. 原型模式不經(jīng)過構(gòu)造方法
  4. 使用原型模式區(qū)分好深拷貝和淺拷貝
  5. 對于簡單的對象,不建議使用的原型模式
  • 深度拷貝和淺拷貝

淺拷貝實際是對成員變量所有的字段進行一次拷貝品抽,對于8中常見的包裝類,string類型
引用類型的拷貝

public interface Prototype {
    Prototype cloneOrder();
}

public interface IOrder extends Prototype {
    int getOderNumber();
    void setOderNumber(int number);
}

public class OrderDealFactory {
     public void dealOrder(IOrder order)
     {
         System.out.println("原訂單地址  :  "+order.hashCode());
         int number=order.getOderNumber();
         while (number>0) {
//           IOrder iOrder=null;
//           if(order instanceof PersonOrder){
//               //個人訂單
//               PersonOrder personOrder=(PersonOrder) order;
//               PersonOrder newPersonOrder=new PersonOrder();
//               newPersonOrder.setOderNumber(number>1000?1000:number);
//               newPersonOrder.setOrderName(personOrder.getOrderName());
//               iOrder=newPersonOrder;
//           }else if(order instanceof CompanyOrder) {              
//           }
//      
             IOrder iOrder=(IOrder) order.cloneOrder();
             iOrder.setOderNumber(number>1000?1000:number);
             number-=1000;
             System.out.println("訂單----     number   
                "+iOrder.getOderNumber()+
                "地址  :  "+iOrder.hashCode());
        }
     }
}

public class PersonOrder  implements IOrder{
    private int oderNumber;
    private String name;
    @Override
    public int getOderNumber() {
        
        return oderNumber;
    }

    @Override
    public void setOderNumber(int number) {
        oderNumber=number;
    }

    public String getOrderName() {
        return name;
    }

    public void setOrderName(String name) {
        this.name=name;
    }

    @Override
    public Prototype cloneOrder() {
        PersonOrder personOrder=new PersonOrder();
        personOrder.setOderNumber(oderNumber);
        personOrder.setOrderName(name);
        return personOrder;
    }

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子畴嘶,更是在濱河造成了極大的恐慌,老刑警劉巖集晚,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窗悯,死亡現(xiàn)場離奇詭異,居然都是意外死亡甩恼,警方通過查閱死者的電腦和手機蟀瞧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門沉颂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來条摸,“玉大人,你說我怎么就攤上這事铸屉《て眩” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵彻坛,是天一觀的道長顷啼。 經(jīng)常有香客問我,道長昌屉,這世上最難降的妖魔是什么钙蒙? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮间驮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘竞帽。我一直安慰自己扛施,他們只是感情好,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布屹篓。 她就那樣靜靜地躺著疙渣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪堆巧。 梳的紋絲不亂的頭發(fā)上妄荔,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天泼菌,我揣著相機與錄音,去河邊找鬼啦租。 笑死灶轰,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的刷钢。 我是一名探鬼主播笋颤,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼内地!你這毒婦竟也來了伴澄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤阱缓,失蹤者是張志新(化名)和其女友劉穎非凌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荆针,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡敞嗡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了航背。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喉悴。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖玖媚,靈堂內(nèi)的尸體忽然破棺而出箕肃,到底是詐尸還是另有隱情,我是刑警寧澤今魔,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布勺像,位于F島的核電站,受9級特大地震影響错森,放射性物質(zhì)發(fā)生泄漏吟宦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一涩维、第九天 我趴在偏房一處隱蔽的房頂上張望殃姓。 院中可真熱鬧,春花似錦激挪、人聲如沸辰狡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至豌鹤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間叫倍,已是汗流浹背偷卧。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吆倦,地道東北人听诸。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像蚕泽,于是被迫代替她去往敵國和親晌梨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容