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

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

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

    afunms

    My Software,My Dream—Forge a more perfect NMS product.

    bridge pattern重構(gòu)report

    我們要實現(xiàn)三個功能:在 jsp 頁面上生成報表(包括一個表和一個圖)、生成 pdf 報表和 excel 報表。

    原來的代碼雖然已經(jīng)實現(xiàn)了這些功能,但每個類的功能不明確,而且存在大量重復(fù)代碼。于是想到用設(shè)計模式來解決這個問題。起初想用裝飾模式( Decorator Pattern ),但經(jīng)過分析,發(fā)現(xiàn)裝飾模式適合于那種需要把多個功能動態(tài)組合在一起的情況。但對于一個 report ,我們并不需要它同時能生成 pdf excel (即不是多個功能的組合)。

    橋梁模式( Bridge Pattern )才是最適合的。橋梁模式的用意是 " 將抽象化( Abstraction )與實現(xiàn)化( Implementation )脫耦,使得二者可以獨(dú)立地變化 " 。( According to GoF, the Bridge Pattern is intended to "Decouple an abstraction from its implementation so that the two can vary independently"

    類圖如下:
    Snap1.jpg

    ?

    類名

    功能

    角色

    AbstractionReport

    所有功能報表的父類

    抽象化(Abstraction)

    PdfReport

    生成pdf報表文件

    修正抽象化

    (Refined Abstraction)

    ExcelReport

    生成excel報表文件

    修正抽象化

    JspReport

    jsp中調(diào)用,生成報表

    修正抽象化

    ?

    ?

    ?

    ImplementorReport

    所有數(shù)據(jù)報表的父類

    實現(xiàn)化(Implementor)

    NetworkPerformanceReport

    網(wǎng)絡(luò)設(shè)備性能報表

    具體實現(xiàn)化

    (Concrete Implementor)

    ServerPerformanceReport

    服務(wù)器性能報表

    具體實現(xiàn)化

    PortTrafficReport

    接口流量報表

    具體實現(xiàn)化

    AbstractionReport的功能是生成pdfexcel文件,而ImplementorReport的功能是收集數(shù)據(jù),為生成報表作準(zhǔn)備。

    AbstractionReport的子類相對固定,因為我們現(xiàn)在只要實現(xiàn)三個功能,當(dāng)然,如果以后還想再實現(xiàn)其他功能,比如生成txt報表或html報表,我們還能再擴(kuò)展,增加兩個類TxtReportHtmlReport即可實現(xiàn)。

    ImplementorReport的子類就比較多了,列出的只是其中三個。

    任意一個AbstractionReportImplementorReport的組合都能有不同的功能。有了以上的各個類,我們就能生成各種各樣的報表,比如我們要生成一個“網(wǎng)絡(luò)設(shè)備性能”的pdf報表文件,就這么寫:

    ?????? AbstractionReport report = new PdfReport(new NetworkPerformanceReport());???????

    ?????? report.createReport();

    生成excel報表文件:

    ?????? AbstractionReport report = new ExcelReport(new NetworkPerformanceReport());???????

    ?????? report.createReport();

    ?

    生成“服務(wù)器性能報表pdf報表文件:

    ?????? AbstractionReport report = new PdfReport(new ServerPerformanceReport());???????

    ?????? report.createReport();

    ?

    生成“服務(wù)器性能報表excel報表文件:

    ??? ??? AbstractionReport report = new ExcelReport(new ServerPerformanceReport());???????

    ?????? report.createReport();




    posted on 2006-11-22 10:09 afunms 閱讀(201) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     

    My Links

    News

    留言簿(18)

    隨筆檔案

    相冊

    搜索

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 久久亚洲中文无码咪咪爱| 中文字幕在线视频免费观看| 国产网站免费观看| 一级女人18片毛片免费视频| 亚洲国产精品久久久久网站 | 亚洲精品白色在线发布| 无码中文在线二区免费| 五月天国产成人AV免费观看| 亚洲一区二区三区日本久久九| 处破痛哭A√18成年片免费| 一个人免费观看www视频| 亚洲日本香蕉视频观看视频| 亚洲AV中文无码乱人伦| 久久狠狠躁免费观看2020| 亚洲AV无码男人的天堂| 亚洲图片一区二区| 免费吃奶摸下激烈视频| 日韩精品福利片午夜免费观着| 精品免费久久久久国产一区| 自拍偷区亚洲国内自拍| 国产AV无码专区亚洲AV男同| 国产精品成人免费综合| 亚洲人成免费电影| 久久精品无码免费不卡| 亚洲熟妇AV一区二区三区浪潮| 亚洲一级二级三级不卡| 国产啪亚洲国产精品无码 | 免费观看亚洲人成网站| 91精品导航在线网址免费| 美景之屋4在线未删减免费| 亚洲婷婷在线视频| 国产亚洲欧洲精品| 亚洲男人的天堂在线va拉文| 女人被男人躁的女爽免费视频 | 久久免费精品一区二区| 日韩少妇内射免费播放| 亚洲a∨国产av综合av下载| 亚洲一区二区三区国产精品无码| 国产成人A人亚洲精品无码| 亚洲精品一级无码鲁丝片| 精品国产麻豆免费网站|