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

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

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

    結(jié)構(gòu)模式-Adapter適配器模式

    一:使用場(chǎng)景

         1)使用的地方:我想使用兩個(gè)不同類的方法,這個(gè)時(shí)候你需要把它們組合起來(lái)使用

         2)目前使用的情況:我會(huì)把兩個(gè)類用戶組合的方式放到一起,編程思想think in java里已經(jīng)提到個(gè),能盡量用組合就用組合,繼承一般考慮再后。

         3)使用后的好處:你不需要改動(dòng)以前的代碼,只是新封裝了一新類,由這個(gè)類來(lái)提供兩個(gè)類的方法,這個(gè)時(shí)候:一定會(huì)想到facade外觀模式,本來(lái)是多個(gè)類使用的情況,我新封裝成一個(gè)類來(lái)使用,而這個(gè)類我采用組合的方式來(lái)包裝新的方法。我的理解是,設(shè)計(jì)模式本身就是為了幫助解決特定的業(yè)務(wù)場(chǎng)景而故意把模式劃分對(duì)應(yīng)的模式類別,其實(shí)大多數(shù)情況,都解決了同樣的問(wèn)題,這個(gè)時(shí)候其實(shí)沒(méi)有必要過(guò)多的糾纏到模式的名字上了,你有好的注意,你甚至取一個(gè)新的名字來(lái)概括這樣的使用場(chǎng)景。

        4)使用的壞處:適配器模式,有兩種方式來(lái)實(shí)現(xiàn)。一個(gè)是組合一個(gè)是繼承,我覺(jué)得,首先應(yīng)該考慮組合,能用組合就不要用繼承,這是第一個(gè)。第二個(gè),你采用繼承來(lái)實(shí)現(xiàn),那肯定會(huì)加大繼承樹(shù)結(jié)構(gòu),如果你的繼承關(guān)系本身就很復(fù)雜了,這肯定會(huì)加大繼承關(guān)系的維護(hù),不有利于代碼的理解,或則更加繁瑣。繼承是為了解決重用的為題而出現(xiàn)的,所以我覺(jué)得不應(yīng)該濫用繼承,有機(jī)會(huì)可以考慮同樣別的方案。

    二:一個(gè)實(shí)際的例子

          關(guān)聯(lián)營(yíng)銷的例子,用戶購(gòu)買完商品后,我又推薦他相關(guān)別的商品

          由于減少代碼,方法我都不采用接口,直接由類來(lái)提供,代碼只是一個(gè)范例而已,都精簡(jiǎn)了。

    1)創(chuàng)建訂單信息

    public class Order {
    private Long orderId;
    private String nickName;

    public Order(Long orderId,String nickName){
       this.orderId=orderId;
       this.nickName=nickName;
    }

    /**
    * 用戶下訂單
    */
    public void insertOrder(){
      
    }
    }

    2)商品信息

    public class Auction {
    /**商品名稱*/
    private String name;

    /**制造商*/
    private String company;

    /**制造日期*/
    private Date date;


    public Auction(String name,String company, Date date){
       this.name=name;
       this.company=company;
       this.date=date;
    }

    /**
    * 推廣的商品列表
    */
    public void commendAuction(){
      
    }

    }

    3)購(gòu)物

    public class Trade {
    /**用戶訂單*/
    private Order order;

    /**商品信息*/
    private Auction auction;

    public Trade(Order order ,Auction auction){
       this.order=order;
       this.auction=auction;
    }

    /**
    * 用戶產(chǎn)生訂單以及后續(xù)的事情
    */
    public void trade(){
       /**下訂單*/
       order.insertOrder();
      
       /**關(guān)聯(lián)推薦相關(guān)的商品*/
       auction.commendAuction();
    }

    }

       4)使用心得:其實(shí)外面采用了很多繼承的方式,order繼承auction之后,利用super .inserOrder()再加一個(gè)auction.recommendAuction(),實(shí)際上大同小異,我到覺(jué)得采用組合更容易理解以及代碼更加優(yōu)美點(diǎn)。

    posted on 2012-08-06 17:38 陳睿 閱讀(268) 評(píng)論(0)  編輯  收藏 所屬分類: 設(shè)計(jì)模式

    導(dǎo)航

    <2012年8月>
    2930311234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    統(tǒng)計(jì)

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 国产福利在线免费| 亚洲午夜精品第一区二区8050| 亚洲综合无码无在线观看| 国产高清在线免费| 成人性生交大片免费看中文| 亚洲三级视频在线| 久久久无码精品亚洲日韩软件 | 麻豆69堂免费视频| 国产V亚洲V天堂无码久久久| 成年18网站免费视频网站 | 国产成人无码区免费A∨视频网站 国产成人涩涩涩视频在线观看免费 | 亚洲精品无码久久久久秋霞 | 亚洲欧美成人综合久久久| 久久精品国产亚洲Aⅴ香蕉| 亚洲黄色片免费看| 一个人免费播放在线视频看片| 91大神亚洲影视在线| 男人的天堂亚洲一区二区三区 | 无码天堂va亚洲va在线va| 亚洲激情视频在线观看| 免费a级毛片无码av| 国产大片免费网站不卡美女| 一二三区免费视频| 亚洲中文字幕无码av永久| 亚洲国产成人久久精品影视| 四虎亚洲国产成人久久精品| 99久久久精品免费观看国产| 最近的2019免费中文字幕| 亚洲Av永久无码精品黑人| 亚洲小视频在线播放| 亚洲国产精品va在线播放| 亚洲第一视频在线观看免费| 毛片在线看免费版| 114级毛片免费观看| a视频在线观看免费| 免费国产黄网站在线看| 亚洲精品无码av中文字幕| 亚洲AV成人噜噜无码网站| 91精品国产亚洲爽啪在线影院| 亚洲国产精品一区第二页| 亚洲性久久久影院|