架構和設計模式的關係

來源:互聯網
上載者:User
 架構是一個應用程式的半成品。架構提供了可在應用程式之間共用的可覆用的公用結構。開發人員把架構融入他們自己的應用程式,並加以擴充,以滿足他們特定的需要。架構和工具包的不同之處在於,架構提供了一致的結構,而不僅僅是一組工具類。
    架構其實就是一組組件,供你選用完成你自己的系統。簡單說就是使用別人搭好的舞台,你來做表演。而且,架構一般是成熟的,不斷升級的軟體。
    可以說,一個架構是一個可複用的設計構件,它規定了應用的體繫結構,闡明了整個設計、協作構件之間的依賴關係、責任分配和控制流程程,表現為一組抽象類別以及其執行個體之間協作的方法,它為構件複用提供了上下文(Context)關係。因此構件庫的大規模重用也需要架構。
    構件領域架構方法在很大程度上借鑒了硬體技術發展的成就,它是構件技術、軟體體繫結構研究和應用軟體開發三者發展結合的產物。在很多情況下,架構通常以構件庫的形式出現,但構件庫只是架構的一個重要部分。架構的關鍵還在於架構內對象間的互動模式和控制流程模式。
    架構比構件可定製性強。在某種程度上,將構件和架構看成兩個不同但彼此協作的技術或許更好。架構為構件提供重用的環境,為構件處理錯誤、交換資料及啟用操作提供了標準的方法。
    應用程式框架的概念也很簡單。它並不是包含構件應用程式的小片程式,而是實現了某應用領域通用完備功能(除去特殊應用的部分)的底層服務。使用這種架構的編程人員可以在一個通用功能已經實現的基礎上開始具體的系統開發。架構提供了所有應用期望的預設行為的類集合。具體的應用通過重寫子類(該子類屬於架構的預設行為)或組裝對象來支援應用專用的行為。
    應用程式框架強調的是軟體的設計重用性和系統的可擴充性,以縮短大型應用軟體系統的開發週期,提高開發品質。與傳統的基於類庫的物件導向重用技術比較,應用程式框架更注重於面向專業領域的軟體重用。應用程式框架具有領域相關性,構件根據架構進行複合而產生可啟動並執行系統。架構的力度越大,其中包含的領域知識就更加完整。
    架構和設計模式的關係
    架構、設計模式這兩個概念總容易被混淆,其實它們之間還是有區別的。構件通常是代碼重用,而設計模式是設計重用,架構則介於兩者之間,部分代碼重用,部分設計重用,有時分析也可重用。在軟體生產中有三種層級的重用:內部重用,即在同一應用中能公用使用的抽象塊;代碼重用,即將通用模組組合成庫或工具集,以便在多個應用和領域都能使用;應用程式框架的重用,即為專用領域提供通用的或現成的基礎結構,以獲得最進階別的重用性。
    架構與設計模式雖然相似,但卻有著根本的不同。設計模式是對在某種環境中反覆出現的問題以及解決該問題的方案的描述,它比架構更抽象;架構可以用代碼錶示,也能直接執行或複用,而對模式而言只有執行個體才能用代碼錶示;設計模式是比架構更小的元素,一個架構中往往含有一個或多個設計模式,架構總是針對某一特定應用領域,但同一模式卻可適用於各種應用。可以說,架構是軟體,而設計模式是軟體的知識。
    為什麼要用架構?
因為軟體系統發展到今天已經很複雜了,特別是伺服器端軟體,設計到的知識,內容,問題太多。在某些方面使用別人成熟的架構,就相當於讓別人幫你完成一些基礎工作,你只需要集中精力完成系統的商務邏輯設計。而且架構一般是成熟,穩健的,他可以處理系統很多細節問題,比如,事物處理,安全性,資料流控制等問題。還有架構一般都經過很多人使用,所以結構很好,所以擴充性也很好,而且它是不斷升級的,你可以直接享受別人升級代碼帶來的好處。
架構一般處在低層應用平台(如J2EE)和高層商務邏輯之間的中介層。
        衡量應用系統設計開發水平高低的標準就是:解耦性;你的應用系統各個功能是否能夠徹底脫離?是否不相互依賴,也只有這樣,才能體現可維護性、可拓展性的軟體設計目標。
  為了達到這個目的,誕生各種架構概念,J2EE架構標準將一個系統劃分為WEB和EJB主要部分,當然我們有時不是以這個具體技術區分,而是從設計上抽象為表現層、服務層和持久層,這三個層次從一個高度將J2EE分離開來,實現解耦目的。
  因此,我們實際編程中,也要將自己的功能向這三個層次上靠,做到大方向清楚,涇渭分明,但是沒有技術上約束限制要做到這點是很不容易的,因此我們還是必須藉助J2EE具體技術來實現,這時,你可以使用EJB規範實現服務層和持久層,Web技術實現表現層;
  EJB為什麼能將服務層從Jsp/Servlet手中分離出來,因為它對JavaBeans編碼有強制的約束,現在有一種對JavaBeans弱約束,使用Ioc模式實現的(當然EJB 3.0也採取這種方式),在Ioc模式誕生前,一般都是通過原廠模式來對JavaBeans約束,形成一個服務層,這也正是Jive這樣開源論壇設計原理之一。
  由此,將服務層從表現層中分離出來目前有兩種可選架構選擇:管理普通JavaBeans(POJO)架構(如Spring、JdonFramework)以及管理EJB的EJB架構,因為EJB不只是架構,還是標準,而標準可以擴充發展,所以,這兩種區別將來是可能模糊,被納入同一個標準了。 但是,個人認為:標準制定是為某個目的服務的,總要犧牲一些換取另外一些,所以,這兩種架構會長時間並存。
  這兩種架構分歧也曾經誕生一個新名詞:完全POJO的系統也稱為輕量級系統(lightweight),其實這個名詞本身就沒有一個嚴格定義,更多是一個迷人的招牌,輕量是指容易學習容易使用嗎?按照這個定義,其實輕量Spring等系統並不容易學習;而且EJB 3.0(依然叫EJB)以後的系統是否可稱為輕量級了呢?
  前面談了服務層架構,使用服務層架構可以將JavaBeans從Jsp/Servlet中分離出來,而使用表現層架構則可以將Jsp中剩餘的JavaBeans完全分離,這部分JavaBeans主要負責顯示相關,一般是通過標籤庫(taglib)實現,不同架構有不同自己的標籤庫,Struts是應用比較廣泛的一種表現層架構。
  這樣,表現層和服務層的分離是通過兩種架構達到目的,剩餘的就是持久層架構了,通過持久層的架構將資料庫儲存從服務層中分離出來是其目的,持久層架構有兩種方向:直接自己編寫JDBC等SQL語句(如iBatis);使用O/R Mapping技術實現的Hibernate和JDO技術;當然還有EJB中的實體Bean技術。
  持久層架構目前呈現百花齊放,各有優缺點的現狀,所以正如表現層架構一樣,目前沒有一個架構被指定為標準架構,當然,表現層架構現在又出來了一個JSF,它代表的頁面組件概念是一個新的發展方向,但是複雜的實現讓人有些忘而卻步。
  在所有這些J2EE技術中,雖然SUN公司發揮了很大的作用,不過總體來說:網路上有這樣一個評價:SUN的理論天下無敵;SUN的產品用起來撞牆;對於初學者,特別是那些試圖通過或已經通過SUN認證的初學者,趕快擺脫SUN的陰影,立即開溜,使用開源領域的產品來實現自己的應用系統。
  最後,你的J2EE應用系統如果採取上面提到的表現層、服務層和持久層的架構實現,基本你也可以在無需深刻掌握設計模式的情況下開發出一個高品質的應用系統了。
  還要注意的是: 開發出一個高品質的J2EE系統還需要正確的業務需求理解,那麼域建模提供了一種比較切實可行的正確理解業務需求的方法,相關詳細知識可從UML角度結合理解。
  當然,如果你想設計自己的行業架構,那麼第一步從設計模式開始吧,因為設計模式提供你一個實現JavaBeans或類之間解耦參考實現方法,當你學會了系統基本單元JavaBean或類之間解耦時,那麼系統模組之間的解耦你就可能掌握,進而你就可以實現行業架構的提煉了,這又是另外一個發展方向了。
        架構的最大好處就是重用。物件導向系統獲得的最大的複用方式就是架構,一個大的應用系統往往可能由多層互相協作的架構組成。
        由於架構能重用代碼,因此從一已有構件庫中建立應用變得非常容易,因為構件都採用架構統一定義的介面,從而使構件間的通訊簡單。
        架構能重用設計。它提供可重用的抽象演算法及高層設計,並能將大系統分解成更小的構件,而且能描述構件間的內部介面。這些標準介面使在已有的構件基礎上通過組裝建立各種各樣的系統成為可能。只要符合介面定義,新的構件就能插入架構中,構件設計者就能重用構架的設計。
        架構還能重用分析。所有的人員若按照架構的思想來分析事務,那麼就能將它劃分為同樣的構件,採用相似的解決方案,從而使採用同一架構的分析人員之間能進行溝通。
        採用架構技術進行軟體開發的主要特點包括:
        領域內的軟體結構一致性好;
        建立更加開放的系統;
        重用代碼大大增加,軟體生產效率和品質也得到了提高;
        軟體設計人員要專註於對領域的瞭解,使需求分析更充分;
        儲存了經驗,可以讓那些經驗豐富的人員去設計架構和領域構件,而不必限於低層編程;
        允許採用快速原型技術;
        有利於在一個項目內多人協同工作;
        大量的重用使得平均開發費用降低,開發速度加快,開發人員減少,維護費用降低,而參數化架構使得適應性、靈活性增強。

     

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.