• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    對設計模式學習的一點想法兼談Facade模式

    發布: 2008-5-04 14:26 | 作者: 不詳 | 來源: 不詳 | 查看: 77次 | 進入軟件測試論壇討論

    領測軟件測試網  對于設計模式,有太多過來人的忠告!“不能拿著捶子,到處都是釘子”,“不能為模式而模式”,“更加的不能錯用模式”,“模式是處理變化的”等等。這些忠告會讓初學者不知所措,就好比太多的選擇是種負擔!我想我還是簡單的理解:設計模式是一種思想,不是技術,它指導的是設計。我想只要我們從設計的問題去運用它就夠了!不管這種理解正不正確,當你涉入進去會讓你從更寬泛的角度去再次的思考。

        《設計模式》言簡意賅,是本很好的參考書,值得反復咀嚼與推敲!我沒讀過《設計模式精解》,聽說是本很好的設計模式入門教材,同類的很多,但在GOF書的面前都成了“偽經”。我沒有貶低的意思,它們的價值也是很大的,輔以實例有助于理解和運用。

        這次翻開《設計模式》,第一個讓我感興趣的是Facade模式!因為在設計多層應用系統時,各層之間的合作關系是比較復雜的,Facade模式就是幫助減弱各層之間耦合度的解決方案。因為它能為子系統中的一組接口提供一致的界面(更高層的接口),這個接口使得子系統更加容易使用。這個模式理解起來非常的簡單,現實生活也有太多的例子,像各企事業單位都有信仿辦公室,它給外部提供一個簡單高效的窗口!你可能會想:我們可以越過它嗎?現實生活中可以走后門兒,那Facade模式是不是也是這樣呢?沒錯,Facade對外沒有隱藏子系統提供的接口,外部對象可以越過它而直調用子系統提供的接口。那你可能會問:這還有什么意義呢?因為Facade模式提供易用性的同時沒有限制通用性,當然這種情況你得權衡!應該提供盡量多的高層接口供客戶使用。這樣可以保證對外隱藏的子系統實現的變化更加容易!Delphi的VCL也有例子,在RemoteDataModule中我們就可以定義一些接口,供客戶系統調用!它是個結構型模式,在框架中處理各層之間的關系時應該是個常用的模式。

        我不想為這個模式寫個實例了,因為它的主要應用是在分層系統中,小例子有為模式而模式之嫌!我正準備為Delphi三層系統的開發設計一個參照框架(為什么是參照呢?因為我還做不到通用),里面將有Facade模式的身影!

        除了在設計開始時有考慮解決方案,可更多的時候我們不能應對所有未來出現的情況,更何況對于沒有經驗的設計人員。找到設計模式為我們提供的解決方案后,下一步是代碼實現的問題!將現有代碼根據模式改造成好的設計需要方法,這就是重構!它是一門技術,現在的IDE大多有提供,設計模式為重構提供了目標(引自GOF)。我們也應該學習它!

     

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: 模式 設計 學習 Facade


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>