<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

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

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

    橋梁模式( Bridge Pattern )才是最適合的。橋梁模式的用意是 " 將抽象化( Abstraction )與實(shí)現(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

    所有功能報(bào)表的父類

    抽象化(Abstraction)

    PdfReport

    生成pdf報(bào)表文件

    修正抽象化

    (Refined Abstraction)

    ExcelReport

    生成excel報(bào)表文件

    修正抽象化

    JspReport

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

    修正抽象化

    ?

    ?

    ?

    ImplementorReport

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

    實(shí)現(xiàn)化(Implementor)

    NetworkPerformanceReport

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

    具體實(shí)現(xiàn)化

    (Concrete Implementor)

    ServerPerformanceReport

    服務(wù)器性能報(bào)表

    具體實(shí)現(xiàn)化

    PortTrafficReport

    接口流量報(bào)表

    具體實(shí)現(xiàn)化

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

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

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

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

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

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

    生成excel報(bào)表文件:

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

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

    ?

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

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

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

    ?

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

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

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




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


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


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

    My Links

    News

    留言簿(18)

    隨筆檔案

    相冊

    搜索

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 国产又粗又长又硬免费视频 | 成人浮力影院免费看| jlzzjlzz亚洲jzjzjz| 日韩a级毛片免费观看| 日韩在线视频免费| 亚洲综合图片小说区热久久| 日本高清免费不卡视频| 一个人免费视频观看在线www| 亚洲字幕在线观看| 亚洲色欲久久久久综合网| 99re在线视频免费观看| 国产av无码专区亚洲av毛片搜| 伊人婷婷综合缴情亚洲五月| 久久久久久免费视频| XXX2高清在线观看免费视频| 国产精品亚洲一区二区麻豆| 日韩亚洲一区二区三区| 日韩a在线观看免费观看| 91香蕉在线观看免费高清| 免费国产在线精品一区| 亚洲av无码片在线观看| 中文字幕人成人乱码亚洲电影 | 久久久久亚洲AV片无码| 四虎免费永久在线播放| 免费成人福利视频| 国产真人无码作爱免费视频| 亚洲欧美精品午睡沙发| 亚洲短视频男人的影院| 亚洲午夜日韩高清一区| 在线观看成人免费视频| 16女性下面扒开无遮挡免费| 国产成人1024精品免费| 亚洲GV天堂无码男同在线观看| 久久精品国产亚洲AV网站| 亚洲国产精品成人久久蜜臀| 成人免费在线视频| 91老湿机福利免费体验| 久久一区二区免费播放| 视频一区二区三区免费观看| 亚洲私人无码综合久久网| 亚洲毛片免费视频|