軟件設(shè)計(jì)模式與體系結(jié)構(gòu)復(fù)習(xí)資料_第1頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

..v設(shè)計(jì)準(zhǔn)則I:正確性和健壯性正確性:每個項(xiàng)目都要滿足指定的需求,然后一起滿足所有應(yīng)用程序的需求,設(shè)計(jì)的正確性一般是指充分性,實(shí)現(xiàn)正確性的正式方法是依靠數(shù)學(xué)邏輯,非正式方法是判斷設(shè)計(jì)是否滿足所需的功能,當(dāng)進(jìn)入詳細(xì)設(shè)計(jì)階段時(shí),經(jīng)常采用正式方法來判斷正確性。模塊可是類或者類的包,包的接口和類的接口不同,包不能被實(shí)例化,通過包來使用接口的一種方法是利用包中指定對象來提供相應(yīng)的接口。為了模塊化特定的應(yīng)用程序,在高層需要創(chuàng)建包,在底層需要創(chuàng)建類設(shè)計(jì)中用到兩種類:領(lǐng)域類和非領(lǐng)域類,一般是從領(lǐng)域類開始類的選擇,然后擴(kuò)展到非領(lǐng)域類,非領(lǐng)域類通常用于概括領(lǐng)域類。健壯性:防止錯誤輸入,防止開發(fā)錯誤;提高健壯性的辦法:檢查輸入、初始化、參數(shù)傳遞技術(shù)、檢查參數(shù)是否違反約束的方法、在類中捕獲參數(shù)、包裝參數(shù)、強(qiáng)化意圖。設(shè)計(jì)準(zhǔn)則II靈活性、可重用性、高效性靈活性:在設(shè)計(jì)時(shí)通常要考慮到將來的變化;增加新功能要依據(jù)其上下文和應(yīng)用范圍可重用性:一個方法相對于上下文環(huán)境越獨(dú)立,其可重用性就越高;完全指定、避免不必要的封裝類耦合、讓名字更具表達(dá)性、解釋算法。高效性:應(yīng)用程序必須在指定時(shí)間內(nèi)完成特定的功能,同樣,對內(nèi)存容量也有一定的要求設(shè)計(jì)模式引言:設(shè)計(jì)目標(biāo)是:靈活性、健壯性、可重用性設(shè)計(jì)原則:面向接口編程的原則(面向接口編程而不是面向?qū)崿F(xiàn)編程)、可變性封裝、開—閉原則(對擴(kuò)展開放,對修改關(guān)閉)、里氏替換原則(適用于父類,但不一定適用子類)、組合/聚合原則(盡量使用組合聚合/聚合,盡量不使用繼承);接口隔離原則(避免接口污染)、依賴倒轉(zhuǎn)原則(高層低層依賴于抽象、細(xì)節(jié)依賴于抽象)、迪米特原則(不和陌生人說話)、單一原則模式的四個基本要素:問題(描述了應(yīng)該在何時(shí)使用模式)、解決方案(描述了設(shè)計(jì)的組成成分)、效果(描述了模式應(yīng)用的效果及使用模式應(yīng)該權(quán)衡的問題)、模式名稱設(shè)計(jì)模式分類:按照目的可以分為:創(chuàng)建型、結(jié)構(gòu)型、行為型按照范圍可以分為:類模式、對象模式模式和框架的區(qū)別:設(shè)計(jì)模式比框架更抽象設(shè)計(jì)模式是比框架更小的體系結(jié)構(gòu)元素框架比設(shè)計(jì)模式更加特例化創(chuàng)建型模式:創(chuàng)建型模式包括抽象工廠模式、生成器模式、工廠模式、原型模式、單件模式創(chuàng)建型模式抽象了實(shí)例化過程,它們幫助一個系統(tǒng)獨(dú)立于如何創(chuàng)建、組合和表示它的那些對象一個類創(chuàng)建型模式使用繼承改變被實(shí)例化的類,而一個對象創(chuàng)建型模式將實(shí)例化委托給另一個對象。隨著系統(tǒng)演化地越來越依賴于對象復(fù)合而不是類繼承,創(chuàng)建型模式變得更為重要創(chuàng)建型模式在什么被創(chuàng)建、誰創(chuàng)建它、它是怎樣被創(chuàng)建的以及何時(shí)創(chuàng)建這些方面給予很大的靈活性抽象工廠模式:意圖:提供一個創(chuàng)建一系列相關(guān)或相互依賴對象的接口而不需要指定他們具體的類別名:KIT適用性:一個系統(tǒng)不應(yīng)當(dāng)依賴于產(chǎn)品類實(shí)例如何被創(chuàng)建、組合和表達(dá)的細(xì)節(jié)這個系統(tǒng)的產(chǎn)品有多余一個的產(chǎn)品族,而系統(tǒng)只消費(fèi)其中某一個族的產(chǎn)品同屬于一個產(chǎn)品族的產(chǎn)品是在一起使用的系統(tǒng)提供一個產(chǎn)品類的庫,所有產(chǎn)品以同樣的接口實(shí)現(xiàn),從而使客戶端不依賴于實(shí)現(xiàn)參與者:抽象工廠角色(核心)、具體工廠(在客戶端的調(diào)用下創(chuàng)建實(shí)例)、抽象產(chǎn)品(所擁有的共同接口)、具體產(chǎn)品效果:1)分離了具體的類2)使得易于交換產(chǎn)品系列3)有利于產(chǎn)品的一致性4)難以支持新種類的產(chǎn)品實(shí)現(xiàn):1)將工廠作為一個單件2)創(chuàng)建產(chǎn)品3)定義可擴(kuò)展的工廠相關(guān):AbstractFactory類通常用工廠方法實(shí)現(xiàn),一個具體工廠通常是一個單件工廠方法模式:意圖:定義一個用于創(chuàng)建對象的接口,讓子類決定實(shí)例化哪個類。FactoryMethod使一個類的實(shí)例化延遲到其子類別名:虛構(gòu)造器適用性:1)當(dāng)一個類不知道它所必須創(chuàng)建的對象的類的時(shí)候2)當(dāng)一個類希望由他的子類來指定他所創(chuàng)建的對象的時(shí)候效果:1)多態(tài)性:客戶代碼可以做到與特定應(yīng)用無關(guān),適用于任何實(shí)體類2)子類提供掛鉤?;悶楣S方法提供缺省實(shí)現(xiàn),子類可以重寫新的實(shí)現(xiàn),也可以繼承父類的實(shí)現(xiàn)。--加一層間接性,增加了靈活性3)封裝性好,擴(kuò)展性好,屏蔽產(chǎn)品類4)需要Creator和相應(yīng)的子類作為factorymethod的載體,如果應(yīng)用模型確實(shí)需要creator和子類存在,則很好;否則的話,需要增加一個類層次單件模式:意圖:保證一個類有且只有一個實(shí)例,并提供一個訪問它的全局訪問點(diǎn)適用性:1)當(dāng)類只能有一個實(shí)例而且客戶可以從一個眾所周知的訪問點(diǎn)訪問它當(dāng)這個唯一實(shí)例應(yīng)該是通過子類化可擴(kuò)展的,并且客戶應(yīng)該無需更改代碼就能使用一個擴(kuò)展類的實(shí)例優(yōu)點(diǎn):1)對唯一實(shí)例的受控訪問2)縮小名空間3)允許對操作和表示的精化4)比類操作更靈活使用單件模式的要點(diǎn):單件模式中的實(shí)例構(gòu)造器可以設(shè)置為protected以允許子類派生;單件模式只考慮到了對象創(chuàng)建的管理,沒有考慮對象銷毀的管理。實(shí)現(xiàn):保證一個唯一的實(shí)例;創(chuàng)建單件類的子類//本質(zhì):內(nèi)存中只能有一個對象//案例:定時(shí)器,計(jì)數(shù)器//使用場景:一個項(xiàng)目只要一個共享訪問點(diǎn)和共享數(shù)據(jù);創(chuàng)建對象消耗資源比較多,如IO操作和數(shù)據(jù)庫讀取//注意:線程安全publicsealedclassSingleton{privatestaticSingleton_singleton=null;privatestaticreadonlyobject_synLock=newobject();privateSingleton(){}publicstaticSingletonGetInstance(){lock(_synLock){if(_singleton==null)_singleton=newSingleton();return_singleton;}}}結(jié)構(gòu)型模式:結(jié)構(gòu)型模式涉及到如何組合類和對象以獲得更大的結(jié)構(gòu)。結(jié)構(gòu)型類模式采用繼承機(jī)制來組合接口或者實(shí)現(xiàn)。結(jié)構(gòu)型模式包括:適配器模式(類對象)、組合模式(對象)、裝飾模式(對象)適配器模式:意圖:將一個類的接口轉(zhuǎn)化為客戶希望的另外一個接口,Adapter模式使得原本由于接口不兼容而不能夠在一起工作的類可以一起工作別名:包裝器適用性:1)想使用一個已經(jīng)存在的類,但接口不符合需要想創(chuàng)建一個可復(fù)用的類,該類可以和其他不相關(guān)的類和不可預(yù)見的類協(xié)同工作想使用一些已經(jīng)存在的類,但不可能對每一個都子類化以匹配他們的接口,對象適配器可以可以適配他們的父類接口結(jié)構(gòu):類適配器(使用多重繼承) 對象適配器(使用對象組合)效果:類適配器:1)用一個具體的類適配Adaptee和Target,當(dāng)想要匹配一個類及他的子類的時(shí)候,類Adapter將不再適用2)Adapter可以重新定義Adaptee的部分方法3)僅僅引入了一個對象,不需要額外的指針對象適配器:1)允許Adapter和一個或者多個Adaptee進(jìn)行適配,Adapter可 以一次性給多個Adaptee添加功能使得重新定義Adaptee的部分希望變得困難注意事項(xiàng):1)Adapter的匹配程度2)可插入的Adapter3)使用雙向適配器通過透明操作實(shí)現(xiàn):可插入的適配器的實(shí)現(xiàn)方法:使用抽象操作、使用代理對象、參數(shù)化的適配器組合模式:意圖:將對象組合成數(shù)結(jié)構(gòu)以表示“整體—部分”結(jié)構(gòu),組合模式使得用戶對單個對象和組合對象的使用具有一致性適用性:1)想表示對象的“整體—部分”的結(jié)構(gòu)希望用戶忽略組合對象與單個對象的不同,用戶將統(tǒng)一地使用組合結(jié)構(gòu)中的對象效果:1)通過遞歸組合,在客戶端代碼中,任何用到基本對象的地方都可以使用組合 對象簡化客戶代碼,客戶可以一致地使用組合結(jié)構(gòu)和單個對象使得更容易添加新類型的組件設(shè)計(jì)一般化,由于容易添加新組件,也將容易帶來新問題裝飾模式:意圖:動態(tài)地給一些對象添加一些額外的職責(zé)。別名:包裝器模式適用性:1)在不影響其他對象的情況下,以動態(tài)、透明的方式給單個對象添加職責(zé)處理那些可以撤銷的職責(zé)當(dāng)不能采用生成子類的方法進(jìn)行擴(kuò)充時(shí)。效果:1)比靜態(tài)繼承更靈活2)避免在層次結(jié)構(gòu)高層的類有太多的特征3)Decorator余它的Component不一樣4)有許多小對象使用注意事項(xiàng):1)接口的一致性 2)省略抽象的Decorator類3)保持Component類的簡單性行為模式:迭代器模式:意圖:提供一種方法順序訪問一個集合對象中的各個元素,而不暴露該對象的內(nèi)部表示別名:游標(biāo)適應(yīng)性:1)訪問一個聚合對象的內(nèi)容而無需暴露它的內(nèi)部表示支持對聚合對象的多重遍歷支持多重迭代效果:1)它支持以不同的方式遍歷一個聚合2)簡化了聚合的接口3)在同一個聚合上可以有多個遍歷觀察者模式:意圖:定義對象間的一對多的關(guān)系,當(dāng)一個對象的狀態(tài)發(fā)生變化時(shí),所有依賴于他的對象都得到通知并被自動更新別名:依賴,發(fā)布——訂閱適用性:1)當(dāng)一個抽象模式有兩個方面,其中一個方面依賴于另一個方面,將這二者封裝在獨(dú)立的對象中以使它們可以各自獨(dú)立地改變及復(fù)用當(dāng)對一個對象的改變需要同時(shí)改變其他對象,而不知道有多少對象有待改變當(dāng)一個對象必須通知其他對象,但又不能假定其他對象是誰效果:1)目標(biāo)和觀察者間的抽象耦合2)支持廣播通信3)意外的更新狀態(tài)模式:意圖:允許一個對象在其內(nèi)部狀態(tài)發(fā)生改變時(shí)改變了它的詢問,對象看起來似乎改變了它的類別名:狀態(tài)對象適用性:1)一個對象的行為取決于他的狀態(tài),并且它必須在運(yùn)行時(shí)刻根據(jù)狀態(tài)改變它的行為一個操作中含有龐大的多分支語句,并且這些分支依賴于該對象的狀態(tài)效果:1)將有特定效果的行為局部化,并將不同狀態(tài)的行為分割開來2)使得狀態(tài)轉(zhuǎn)換顯示化3)State對象可被共享體系結(jié)構(gòu):定義:軟件體系結(jié)構(gòu)包括構(gòu)成系統(tǒng)的設(shè)計(jì)元素的描述,設(shè)計(jì)元素的交互,設(shè)計(jì)元素組合的模式,以及這些模式中的約束。意義:1)體系結(jié)構(gòu)是風(fēng)險(xiǎn)承擔(dān)者進(jìn)行交流的手段2)體系結(jié)構(gòu)有助于系統(tǒng)級關(guān)注點(diǎn)的理解3)體系結(jié)構(gòu)是早期設(shè)計(jì)決策的體現(xiàn)4)軟件體系結(jié)構(gòu)是可傳遞和可重用的模型作用:軟件系統(tǒng)的體系結(jié)構(gòu)定義系統(tǒng)由計(jì)算構(gòu)件和構(gòu)件之間的相互作用組成;體系結(jié)構(gòu)還指出了系統(tǒng)需求和已構(gòu)建系統(tǒng)的元素之間的對應(yīng)關(guān)系,能為設(shè)計(jì)方案的選擇提供基本原則。研究內(nèi)容:1)通過提供一種新的體系結(jié)構(gòu)描述語言(ArchitecturalDescriptionLanguage)解決體系結(jié)構(gòu)描述問題體系結(jié)構(gòu)領(lǐng)域知識的總結(jié)性研究。針對特定領(lǐng)域的框架的研究。軟件體系結(jié)構(gòu)形式化支持的研究??蚣堋Ⅲw系結(jié)構(gòu)、設(shè)計(jì)模式三者的比較:設(shè)計(jì)模式是對在某種環(huán)境中反復(fù)出現(xiàn)的問題以及解決該問題的方案的描述,比框架更抽象;框架可用代碼表示,也能直接執(zhí)行或復(fù)用,而對模式而言只有實(shí)例才能用代碼表示設(shè)計(jì)模式是比框架更小的元素,一個框架中往往含有一個或多個設(shè)計(jì)模式,框架總是針對某一特定應(yīng)用領(lǐng)域,但同一模式卻可適用于各種不同的應(yīng)用。體系結(jié)構(gòu)風(fēng)格描述了軟件系統(tǒng)的整體組織結(jié)構(gòu),它獨(dú)立于實(shí)際問題。而設(shè)計(jì)模式和應(yīng)用框架更加面向具體問題。常見的體系結(jié)構(gòu)的優(yōu)缺點(diǎn):兩層C/S結(jié)構(gòu):優(yōu)點(diǎn):1)強(qiáng)大的數(shù)據(jù)操作和事務(wù)處理能力,模型思想簡單,易于人們理解和接受。2)硬件和軟件的變化顯示出極大的適應(yīng)性和靈活性,而且易于對系統(tǒng)進(jìn)行擴(kuò)充和縮小3)大的應(yīng)用處理任務(wù)分布到許多通過網(wǎng)絡(luò)連接的低成本計(jì)算機(jī)上,以節(jié)約大量費(fèi)用。缺點(diǎn):開發(fā)成本較高、客戶端程序設(shè)計(jì)復(fù)雜、信息內(nèi)容和形式單一、用戶界面風(fēng)格不一、軟件移植困難、軟件維護(hù)和升級困難、新技術(shù)不能輕易應(yīng)用 三層C/S結(jié)構(gòu):優(yōu)點(diǎn):1)允許合理地劃分三層結(jié)構(gòu)的功能,使之在邏輯上保持相對獨(dú)立性,能提高系統(tǒng)和軟件的可維護(hù)性和可擴(kuò)展性2)允許更靈活有效地選用相應(yīng)的平臺和硬件系統(tǒng)。并且這些平臺和各個組成部分可以具有良好的可升級性和開放性。3)應(yīng)用的各層可以并行開發(fā)4)為嚴(yán)格的安全管理奠定了堅(jiān)實(shí)的基礎(chǔ)缺點(diǎn):1)三層C/S結(jié)構(gòu)各層間的通信效率若不高,即使分配給各層的硬件能力很強(qiáng),其作為整體來說也達(dá)不到所要求的性能2)設(shè)計(jì)時(shí)必須慎重考慮三層間的通信方法、通信頻度及數(shù)據(jù)量。這和提高各層的獨(dú)立性一樣是三層C/S結(jié)構(gòu)的關(guān)鍵問題。B/S結(jié)構(gòu):優(yōu)點(diǎn): 1)基于B/S體系結(jié)構(gòu)的軟件,系統(tǒng)安裝、修改和維護(hù)全在服務(wù)器端解決,達(dá) 到了“零客戶端”的功能,很容易在運(yùn)行時(shí)自動升級。B/S體系結(jié)構(gòu)還提供了異種機(jī)、異種網(wǎng)、異種應(yīng)用服務(wù)的聯(lián)機(jī)、聯(lián)網(wǎng)、統(tǒng)一服務(wù)的最現(xiàn)實(shí)的開放性基礎(chǔ)缺點(diǎn): 1)B/S體系結(jié)構(gòu)缺乏對動態(tài)頁面的支持能力,沒有集成有效的數(shù)據(jù)庫處理功 能B/S體系結(jié)構(gòu)的系統(tǒng)擴(kuò)展能力差,安全性難以控制。采用B/S體系結(jié)構(gòu)的應(yīng)用系統(tǒng),在數(shù)據(jù)查詢等響應(yīng)速度上,要遠(yuǎn)遠(yuǎn)地低于C/S體系結(jié)構(gòu)數(shù)據(jù)的動態(tài)交互性不強(qiáng),不利于在線事務(wù)處理(OLTP)應(yīng)用C/S與B/S混合之“內(nèi)外有別”模型:優(yōu)點(diǎn): 外部用戶不直接訪問數(shù)據(jù)庫服務(wù)器,能保證企業(yè)數(shù)據(jù)庫的相對安全;企業(yè)內(nèi)部用戶的交互性較強(qiáng),數(shù)據(jù)查詢和修改的響應(yīng)速度較快缺點(diǎn):企業(yè)外部用戶修改和維護(hù)數(shù)據(jù)是速度較慢,較煩瑣,數(shù)據(jù)的動態(tài)交互性不強(qiáng)C/S與B/S混合之“查改有別”模型:優(yōu)點(diǎn):優(yōu)點(diǎn)體現(xiàn)了B/S體系結(jié)構(gòu)和C/S體系結(jié)構(gòu)的共同優(yōu)點(diǎn),即B/S對客戶端要求不高,只需要查詢的客戶端只要安裝瀏覽器即可,提供了開放性,實(shí)現(xiàn)修改的終端和服務(wù)器之間采取C/S結(jié)構(gòu)。缺點(diǎn):外部用戶能直接通過Internet連接到數(shù)據(jù)庫服務(wù)器,企業(yè)數(shù)據(jù)容易暴露給外部用戶,給數(shù)據(jù)安全造成了一定的威脅體系結(jié)構(gòu)案例:1. 名稱:上下文關(guān)鍵字解決方案: 1)基于功能分解,可以共享訪問數(shù)據(jù)表示;基于隱藏設(shè)計(jì)決策的分解名稱:儀器軟件解決方案: 1)改進(jìn)后的管道過濾器模型專用化模型名稱:移動機(jī)器人解決方案: 1)控制環(huán)路分層體系結(jié)構(gòu)隱式調(diào)用黑板體系結(jié)構(gòu)體系結(jié)構(gòu)評估方法:SAAM(軟件架構(gòu)分析方法)體系結(jié)構(gòu)的描述、場景的形成、場景的分類和優(yōu)先級的確定、對間接場景的單個評估、場景相互作用的評估、形成總體評估ATAM(體系結(jié)構(gòu)權(quán)衡分析方法)步驟:1)描述:描述ATAM方法描述

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論