<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í)候你需要把它們組合起來使用

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

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

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

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

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

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

    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)購物

    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í)際上大同小異,我到覺得采用組合更容易理解以及代碼更加優(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)論排行榜

    主站蜘蛛池模板: 亚洲熟妇色自偷自拍另类| 麻豆高清免费国产一区| 国产yw855.c免费视频| 亚洲一级黄色大片| 免费看黄视频网站| 亚洲一区二区三区高清不卡| 91老湿机福利免费体验| 亚洲欧洲高清有无| 毛片A级毛片免费播放| 亚洲人成色777777老人头| 成年女人免费视频播放77777| 亚洲一区二区三区成人网站| 黄网址在线永久免费观看| 美女露100%胸无遮挡免费观看| 免费久久精品国产片香蕉| 一本岛v免费不卡一二三区| 亚洲综合无码精品一区二区三区 | 亚洲av午夜电影在线观看 | 久久精品成人免费国产片小草| 中文字幕在亚洲第一在线| 最近免费中文字幕MV在线视频3 | 日韩中文字幕免费| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 亚洲av综合色区| 日韩免费精品视频| 国产精品亚洲一区二区三区久久| 亚洲国产成人久久一区WWW| a级毛片在线免费看| 亚洲欧洲日本国产| 免费v片在线观看无遮挡| a级毛片无码免费真人久久| 亚洲中文字幕无码av在线| 又黄又爽的视频免费看| 一级毛片不卡片免费观看| 在线观看亚洲AV日韩A∨| 中文字幕在亚洲第一在线| 成人免费a级毛片| 插鸡网站在线播放免费观看| 亚洲中文无码av永久| 亚洲一区二区三区在线观看精品中文 | 永久看日本大片免费35分钟|