體系結(jié)構(gòu) SA整理_第1頁
體系結(jié)構(gòu) SA整理_第2頁
體系結(jié)構(gòu) SA整理_第3頁
體系結(jié)構(gòu) SA整理_第4頁
體系結(jié)構(gòu) SA整理_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、目錄 TOC o 1-3 h z u HYPERLINK l _Toc351114755 1名詞解釋: PAGEREF _Toc351114755 h 1 HYPERLINK l _Toc351114756 模塊化 PAGEREF _Toc351114756 h 8 HYPERLINK l _Toc351114757 結(jié)構(gòu)化的內(nèi)聚與耦合類型; PAGEREF _Toc351114757 h 8 HYPERLINK l _Toc351114758 面向?qū)ο蟮鸟詈项愋停?PAGEREF _Toc351114758 h 9 HYPERLINK l _Toc351114759 對給出的例子:考試方式

2、PAGEREF _Toc351114759 h 13 HYPERLINK l _Toc351114760 3信息隱藏 PAGEREF _Toc351114760 h 13 HYPERLINK l _Toc351114761 對簡單的應(yīng)用,按照“處理流程”與“信息隱藏”兩種方式分別給出設(shè)計(jì)描述。 PAGEREF _Toc351114761 h 13 HYPERLINK l _Toc351114762 對簡單的應(yīng)用,解釋其Module Guide。(什么是ModuleGuide,每個(gè)部分的作用) PAGEREF _Toc351114762 h 16 HYPERLINK l _Toc35111476

3、3 4軟件體系結(jié)構(gòu)風(fēng)格: PAGEREF _Toc351114763 h 16 HYPERLINK l _Toc351114764 描述或比較相關(guān)風(fēng)格(描述、比較、優(yōu)缺點(diǎn)、使用特點(diǎn)) PAGEREF _Toc351114764 h 16 HYPERLINK l _Toc351114765 5全局分析的步驟(背誦)(ppt7) PAGEREF _Toc351114765 h 29 HYPERLINK l _Toc351114766 6 根據(jù)分析類圖,建立基本的設(shè)計(jì)類圖(給分析類圖,給要求,做設(shè)計(jì)) PAGEREF _Toc351114766 h 30 HYPERLINK l _Toc351114

4、767 7 有幾種控制流處理方式?進(jìn)行比較 PAGEREF _Toc351114767 h 31 HYPERLINK l _Toc351114768 8 GRASP模式 PAGEREF _Toc351114768 h 33 HYPERLINK l _Toc351114769 9設(shè)計(jì)模式: PAGEREF _Toc351114769 h 36 HYPERLINK l _Toc351114770 1普通Programming to Interfaces有哪些手段? PAGEREF _Toc351114770 h 36 HYPERLINK l _Toc351114771 集合類型Programmin

5、g to Interfaces有哪些手段? PAGEREF _Toc351114771 h 37 HYPERLINK l _Toc351114772 De-Coupling有哪些手段? PAGEREF _Toc351114772 h 38 HYPERLINK l _Toc351114773 一個(gè)模塊的信息隱藏有哪兩種基本類型? PAGEREF _Toc351114773 h 40 HYPERLINK l _Toc351114774 實(shí)現(xiàn)共性與可變性有哪些手段? PAGEREF _Toc351114774 h 40 HYPERLINK l _Toc351114775 對象的創(chuàng)建有哪些常見解決方法

6、? PAGEREF _Toc351114775 h 431名詞解釋:模塊化(關(guān)鍵是思想)、信息隱藏、軟件體系結(jié)構(gòu)(三個(gè)不同方面,高層,關(guān)注點(diǎn),設(shè)計(jì)結(jié)構(gòu))、4+1 View、GRASP模式(任意挑一個(gè)或其中之一)、設(shè)計(jì)模式(主要考designpattern的?,ppt上不明確)、MVC(特點(diǎn),畫出solution)1)模塊化:是一種責(zé)任分配,而不是單純的子程序;代表具體對自身的設(shè)計(jì)決策而不被其他模塊知道支持實(shí)現(xiàn)中的靈活性不要描述過程的步驟高內(nèi)聚、低耦合模塊是可以被獨(dú)立對待的:即可以獨(dú)立的理解、使用(或復(fù)用)、編譯等;一個(gè)模塊的錯(cuò)誤不會(huì)影響其他模塊;模塊的改變也不會(huì)產(chǎn)生連鎖反應(yīng)。抽象和分解:抽象是

7、把不要的東西扔掉,去掉不重要的,隱藏細(xì)節(jié);2)信息隱藏:基本設(shè)計(jì)原則:每個(gè)模塊的實(shí)現(xiàn)都是秘密;每個(gè)模塊的接口被抽象而精確地描述;我們抽象出可能會(huì)變化的實(shí)現(xiàn)細(xì)節(jié);我們將那些不能被隱藏的變化部分進(jìn)行參數(shù)化;關(guān)鍵技術(shù)是盡可能多的限制對程序?qū)嶓w的訪問。每個(gè)模塊包含一個(gè)基本的秘密:外部行為VS內(nèi)部實(shí)現(xiàn)。每個(gè)模塊隱藏重要的設(shè)計(jì)決策的實(shí)現(xiàn)以達(dá)到只有那個(gè)模塊本身知道實(shí)現(xiàn)細(xì)節(jié)。所有的設(shè)計(jì)決策都是相互獨(dú)立的。模塊擁有額外的秘密:變化百科:在設(shè)計(jì)和確定模塊時(shí),使得一個(gè)模塊內(nèi)包含的特定信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說,是透明的。通過信息隱藏,可以定義和實(shí)施對模塊的過程細(xì)節(jié)和局部數(shù)據(jù)結(jié)構(gòu)的存取限制。

8、3)軟件體系結(jié)構(gòu)(高層結(jié)構(gòu)、關(guān)注點(diǎn)、設(shè)計(jì)風(fēng)格):高層結(jié)構(gòu):部件、連接件、配置高層抽象的作用高層結(jié)構(gòu)需求(質(zhì)量屬性)、項(xiàng)目環(huán)境、商業(yè)目標(biāo)交流媒介的作用關(guān)注點(diǎn)問題、候選設(shè)計(jì)、理由、解決方案指導(dǎo)開發(fā)的作用設(shè)計(jì)決策軟件體系結(jié)構(gòu)部件:軟件體系結(jié)構(gòu)的一個(gè)基礎(chǔ)元素,承載了系統(tǒng)主要的計(jì)算與狀態(tài),封裝了系統(tǒng)的功能處理和數(shù)據(jù)。部件包括抽象規(guī)格與具體實(shí)現(xiàn)兩部分。抽象規(guī)格定義了部件的特征集,包括部件的類型、功能性、約束、質(zhì)量屬性等特征。抽象規(guī)格還定義和命名了部件對外可見、可被外界引用的接口實(shí)體,稱為端口。每個(gè)端口是一個(gè)一致的接口集合,它代表了部件對外承諾的一種職責(zé)。連接件:軟件體系結(jié)構(gòu)的另一個(gè)基礎(chǔ)元素,承載了部件之間

9、的交互。作為交互中介,連接件只將參與方關(guān)聯(lián)到抽象的協(xié)議角色,而不是具體的部件類型。除了提供交互通道外,連接件還要維護(hù)交互規(guī)則,調(diào)節(jié)交互效果,并提供交互過程所需的各種復(fù)雜輔助機(jī)制。抽象規(guī)格定義了連接件的特征集,包括類型、接口規(guī)則、交互斷言、交互協(xié)議(例如順序、性能)等。連接件抽象規(guī)格所定義和命名的對外可見、可被外界引用的接口實(shí)體稱為角色。每個(gè)角色代表一個(gè)交互參與方需要滿足的一些條件,基本的條件是匹配該角色的端口所應(yīng)符合的規(guī)則,復(fù)雜的條件可能會(huì)包括加密通信、負(fù)載均衡等。配置:一種將部件和連接件整合起來,構(gòu)成系統(tǒng)的整體結(jié)構(gòu),達(dá)到系統(tǒng)設(shè)計(jì)目標(biāo)的專門機(jī)制。配置通過部件端口與連接件角色相匹配的方式,將系統(tǒng)

10、中部件和連接件的關(guān)系定義為一個(gè)關(guān)聯(lián)集合,這個(gè)關(guān)聯(lián)集合可以形成系統(tǒng)整體結(jié)構(gòu)的一個(gè)拓?fù)涿枋?。高層抽象的作用:軟件體系結(jié)構(gòu)最為核心的思想是將注意力集中在系統(tǒng)總體結(jié)構(gòu)的組織上,它實(shí)現(xiàn)的手段是運(yùn)用抽象方法屏蔽錯(cuò)綜復(fù)雜的模塊間連接,使人們的認(rèn)知提升并保持在整體結(jié)構(gòu)的部件“交互”層次,并進(jìn)一步將交互從計(jì)算中分離出來,建立“部件+連接件+配置”的軟件系統(tǒng)高層結(jié)構(gòu)組織方式。關(guān)注點(diǎn):軟件體系結(jié)構(gòu)的主要關(guān)注點(diǎn)可以分為三個(gè)類型:需求。需求是用戶和維護(hù)人員關(guān)注的內(nèi)容,它包括(要求系統(tǒng)幫助用戶完成任務(wù)的)功能需求,也包括(衡量功能實(shí)現(xiàn)程度的)質(zhì)量屬性。一個(gè)好的軟件體系結(jié)構(gòu)必須要承載需求,以完成從需求向設(shè)計(jì)的轉(zhuǎn)換與過渡。項(xiàng)

11、目環(huán)境。項(xiàng)目環(huán)境是客戶、項(xiàng)目管理者和開發(fā)者關(guān)注的內(nèi)容??蛻絷P(guān)注的是項(xiàng)目的商業(yè)環(huán)境,例如目標(biāo)市場的大小等。項(xiàng)目管理者關(guān)注的是項(xiàng)目的開發(fā)環(huán)境,例如成本、人員組成等。開發(fā)者關(guān)注的是技術(shù)環(huán)境,例如中間件平臺(tái)的選擇等。項(xiàng)目環(huán)境限制軟件體系結(jié)構(gòu)設(shè)計(jì)的決策范圍。商業(yè)目標(biāo)。商業(yè)目標(biāo)是客戶的主要關(guān)注內(nèi)容,它說明了軟件系統(tǒng)被開發(fā)的出發(fā)點(diǎn)和戰(zhàn)略目標(biāo)。商業(yè)目標(biāo)是引導(dǎo)軟件體系結(jié)構(gòu)設(shè)計(jì)的上下文,為軟件體系結(jié)構(gòu)的設(shè)計(jì)決策指明方向。交流媒介的作用:對涉眾關(guān)注內(nèi)容的選擇、表現(xiàn)、權(quán)衡折中等工作使得軟件體系結(jié)構(gòu)變成了涉眾需要的一種綜合與平衡。因此,對于項(xiàng)目而言,軟件體系結(jié)構(gòu)不僅僅是一個(gè)高層抽象的技術(shù)藍(lán)圖,還是一個(gè)體現(xiàn)項(xiàng)目主要關(guān)注內(nèi)

12、容的需要藍(lán)圖。技術(shù)藍(lán)圖和需要藍(lán)圖的融合使得軟件體系結(jié)構(gòu)具備了工程藍(lán)圖的作用,指導(dǎo)后續(xù)開發(fā)工作的同時(shí),還起著交流媒介的作用。設(shè)計(jì)決策:決策是指決定策略與辦法,將軟件體系結(jié)構(gòu)設(shè)計(jì)中的決策定義為:“對元素、特征和處理的選擇,它們涉及一個(gè)或多個(gè)關(guān)注點(diǎn),直接或間接地影響到軟件體系結(jié)構(gòu)”。關(guān)于體系結(jié)構(gòu)設(shè)計(jì)決策所應(yīng)該包含的具體內(nèi)容,有著很多不同的看法一般來說,體系結(jié)構(gòu)設(shè)計(jì)決策核心的知識(shí)可以分為四個(gè)部分:關(guān)注點(diǎn)、解決方案、策略和理由,指導(dǎo)開發(fā)的作用:軟件體系結(jié)構(gòu)設(shè)計(jì)決策將關(guān)注點(diǎn)轉(zhuǎn)化到高層結(jié)構(gòu)之上,使得后續(xù)開發(fā)工作可以在一個(gè)限定的范圍內(nèi)、穩(wěn)定可靠的框架下進(jìn)行。同時(shí),軟件體系結(jié)構(gòu)設(shè)計(jì)決策所產(chǎn)生的設(shè)計(jì)規(guī)則、設(shè)計(jì)約束

13、和附加需求也對后續(xù)的開發(fā)工作提出了要求和限制。所以,作為設(shè)計(jì)決策集合的軟件體系結(jié)構(gòu)既是后續(xù)開發(fā)的工作基礎(chǔ),又限定了后續(xù)開發(fā)必須要滿足的上下文環(huán)境,對后續(xù)開發(fā)工作具有指導(dǎo)作用。4)4+1 View:邏輯視圖:面向?qū)ο蠓纸?,系統(tǒng)將問題域分解成一系列關(guān)鍵的抽象,以對象或類的形式表現(xiàn)。view:最終用戶consider:功能需求不僅是功能性分析,還可以識(shí)別系統(tǒng)不同部分之間共同的機(jī)制和設(shè)計(jì)元素。進(jìn)程視圖:進(jìn)程分解view:Integratorconsider:非功能需求(并發(fā)、性能、scalability)style:幾個(gè)風(fēng)格都可以滿足這個(gè)視圖使用多層次的抽象,最高時(shí)進(jìn)程的邏輯網(wǎng);系統(tǒng)被分成幾個(gè)相互獨(dú)立

14、的任務(wù):主要任務(wù)是體系結(jié)構(gòu)相關(guān)的任務(wù)、次要任務(wù)是幫助類的任務(wù)重點(diǎn)關(guān)注系統(tǒng)運(yùn)行起來之后的特征開發(fā)視圖:子系統(tǒng)分解viewer:程序員和軟件經(jīng)理consider:軟件模塊組織(層次結(jié)構(gòu)、軟件管理、復(fù)用、工具約束等)style:分層風(fēng)格物理視圖:將軟件映射到硬件上viewer:系統(tǒng)集成師consider:非功能需求(可用性、可靠性(容錯(cuò)性)、性能(吞吐量)、scalcbility)場景:將所有放在一起viewer:其他視圖所有人和評(píng)價(jià)者consider:四個(gè)視圖間的一致性、可驗(yàn)證性體系結(jié)構(gòu)設(shè)計(jì)階段幫助架構(gòu)師;幫助解釋和驗(yàn)證文檔5)GRASP模式(或其中之一): General Responsibil

15、ity Assignment Software patterns(通用職責(zé)軟件模式),核心思想是職責(zé)分配,用職責(zé)設(shè)計(jì)對象。主要特征:對象職責(zé)分配的基本原則;主要應(yīng)用在分析和建模上。核心思想理解:自己干自己的事(職責(zé)的分配);自己干自己的能干的事(職責(zé)的分配);自己只干自己的事(職責(zé)的內(nèi)聚);包含9個(gè)基本模式:1 信息專家:解決類的職責(zé)分配問題的最基本模式。問題:當(dāng)我們發(fā)現(xiàn)完對對象和職責(zé)后,職責(zé)的分配原則是什么?解決方案:職責(zé)的執(zhí)行需要某些信息,把職責(zé)分配給該信息的擁有者。即某項(xiàng)職責(zé)的執(zhí)行需要某些資源,只有擁有這些資源的對象才有資格執(zhí)行職責(zé)。優(yōu)點(diǎn):信息擁有者類同時(shí)就是信息的操作類,可以減少不必要

16、的類之間的關(guān)聯(lián);各個(gè)類的職責(zé)單一明確,容易理解;保持信息的封裝性;促進(jìn)低耦合和高內(nèi)聚;造成某個(gè)類過于復(fù)雜。2 創(chuàng)建者:解決類的實(shí)例和創(chuàng)建職責(zé)問題的模式。問題:類的實(shí)例的創(chuàng)建職責(zé),應(yīng)該分配給什么樣的類?或者說類的實(shí)例應(yīng)該由誰來創(chuàng)建?解決方案:B包含A,或B聚集A,或B記錄A,或B頻繁使用A或B有A初始化數(shù)據(jù)時(shí),類A的實(shí)例的創(chuàng)建職責(zé)就分配給B。(其中,最提倡聚集和包含)一般用工廠模式或抽象工廠模式作為替代方案。優(yōu)點(diǎn):整個(gè)結(jié)構(gòu)清晰易懂;有利于類或組件的重用;防止職責(zé)的分散;降低耦合性。避免依賴其他的類來創(chuàng)建自己的對象。3 高內(nèi)聚:為降低類的復(fù)雜程度,簡化控制而提出的面向?qū)ο笤O(shè)計(jì)的原則性模式。(其他模

17、式的根本)問題:怎么做才能降低類的復(fù)雜程度,簡化控制?解決方案:緊密相關(guān)的功能(職責(zé))應(yīng)該分配給同一個(gè)類。優(yōu)點(diǎn):聚集相關(guān)功能,結(jié)構(gòu)清晰,容易理解;只聚集相關(guān)功能,使得類的職責(zé)單一明確,從而降低類的復(fù)雜程度,使用簡單。類易于維護(hù);支持低耦合;支持復(fù)用。4 低耦合:為降低類之間的關(guān)聯(lián)程度,適應(yīng)可變性而提出的面向?qū)ο笤O(shè)計(jì)的原則性模式。(其他模式的根本)問題:怎樣做才能降低類之間關(guān)聯(lián)程度,適應(yīng)需求的變化呢?解決方案:為類分配職責(zé)時(shí),應(yīng)該盡量降低類之間的關(guān)聯(lián)關(guān)系(耦合性)。亦即,應(yīng)該以降低類之間的耦合關(guān)系作為職責(zé)分配的原則。優(yōu)點(diǎn):獨(dú)立性,有利于重用和維護(hù);適應(yīng)需求變化,一旦發(fā)生變化時(shí),可以把影響范圍縮小

18、到最小范圍。5 控制器:解決事件處理職責(zé)問題的模式。問題:在UI層之外,應(yīng)該由哪個(gè)類來處理(控制)系統(tǒng)操作(事件)呢?解決方案:把系統(tǒng)事件的處理職責(zé)分配給控制器類。擔(dān)當(dāng)控制器類角色的候補(bǔ)類可能為:系統(tǒng)全體,設(shè)備,子系統(tǒng)等的表現(xiàn)類(Faade Controller);系統(tǒng)實(shí)踐發(fā)生的用例的控制類,通常被命名為Handler,Coordinator,Session等。優(yōu)點(diǎn):防止同類職責(zé)的分散。滿足高內(nèi)聚,低耦合原則;有利于共通處理;變化的高適應(yīng)能力,能把變化的修改范圍控制在最小范圍內(nèi)。增加復(fù)用的潛力,基本思想是控制器對象使外部事件源和內(nèi)部事件處理的類型和行為相互獨(dú)立(解耦);隨時(shí)查看用例的狀態(tài),保證

19、系統(tǒng)操作的合法性,或解釋當(dāng)前活動(dòng)或操作的狀態(tài)。6 多態(tài)性:擴(kuò)展模式的一種,通過多態(tài)操作把基于類型的可變行為的定義職責(zé)分配給行為發(fā)生的類。(命令模式、策略模式、依賴倒置原則)問題:根據(jù)類型(類)的不同而發(fā)生變化的行為的定義,應(yīng)該分配給誰?解決方案:提倡通過多臺(tái)操作把基于類型的可變行為的定義職責(zé)分配給行為發(fā)生的類。繼承有三種:父類型子類型(類型多態(tài))處理差異性(行為多態(tài))為了復(fù)用(效果多態(tài))優(yōu)點(diǎn):避免重復(fù)代碼;避免重復(fù)的分歧條件;易擴(kuò)展,只要實(shí)現(xiàn)了統(tǒng)一的通用接口,便可實(shí)現(xiàn)行為的擴(kuò)展。比顯示的選擇邏輯更為簡單和可靠;在設(shè)計(jì)中增加類的數(shù)量;會(huì)使代碼不易追蹤;把多個(gè)耦合變?yōu)橐粋€(gè)耦合。7 純虛構(gòu):擴(kuò)展模式

20、之一,把非問題領(lǐng)域中的職責(zé)分配給人工定義的類,問題:非問題領(lǐng)域中的職責(zé)應(yīng)該分配給誰?或者說,按照信息專家等模式分配職責(zé)時(shí),存在某些不恰當(dāng)?shù)穆氊?zé)時(shí),應(yīng)該怎么做?解決方案:提倡把那些非問題領(lǐng)域的職責(zé)分配給那些人工生成的或者容易此類職責(zé)的概念類??梢灾挥行袨闆]有狀態(tài)或只有狀態(tài)沒有行為。優(yōu)點(diǎn):高內(nèi)聚,不必分配問題領(lǐng)域以外的職責(zé)給Domain類,從而保證各Domain類內(nèi)部功能上的高度聚集性;低耦合,問題領(lǐng)域以外的職責(zé)被分配給第三方非Domain類,一方面可以降低各Domain類之間的關(guān)聯(lián)程度,另一方面可以比較漂亮地整合系統(tǒng)的各方面的職責(zé);重用性,各Domain類由于功能上的聚集和關(guān)聯(lián)度的降低,可以更容

21、易地得到重用。8 間接模式:解決類的關(guān)聯(lián)問題的模式。問題:為了避免類之間的直接關(guān)聯(lián),應(yīng)該給什么樣的類分配“關(guān)聯(lián)”責(zé)任?解決方案:當(dāng)多個(gè)類之間存在復(fù)雜的消息交互時(shí),間接模式提倡類之間不直接進(jìn)行消息交互處理,而是導(dǎo)入第三方類,把責(zé)任(多個(gè)類之間的關(guān)聯(lián)責(zé)任)分配給第三方類,降低類之間的耦合程度。(中介者模式)優(yōu)點(diǎn):高內(nèi)聚,通過把“關(guān)聯(lián)”的功能分散到第三方類,原來的類可以更加關(guān)注自身功能的實(shí)現(xiàn);低耦合,原本關(guān)聯(lián)類之間不直接關(guān)聯(lián),降低類之間的耦合性;高重用性,第三方類對“關(guān)聯(lián)”功能的集中處理,與原來的類對自身功能的專注,有利于類的重用。9 差異性保護(hù):擴(kuò)展模式之一,它設(shè)計(jì)穩(wěn)定的接口應(yīng)對將來可能發(fā)生的變化

22、或其他不安定的因素。問題:對存在于系統(tǒng),子系統(tǒng),或?qū)ο蟮仍刂械母鞣N變化或不安定的因素,為了不產(chǎn)生對其他元素的不利影響,在它們中間該怎樣分配職責(zé)?解決方案:提倡在可預(yù)測的變化或不安定因素的周圍,用穩(wěn)定的接口來承擔(dān)職責(zé)。優(yōu)點(diǎn):提高系統(tǒng)對變化的應(yīng)對能力。一旦系統(tǒng)的可預(yù)見的不安定因素發(fā)生變化(比如追加功能等),只需要生成一個(gè)已有的穩(wěn)定接口的實(shí)現(xiàn)類就可以了,無需修改原來的類;高內(nèi)聚。具體的功能在各子類中實(shí)現(xiàn),各類的內(nèi)部功能具有高度聚集性;低耦合。用戶類只跟穩(wěn)定接口通信,減少了跟其它陌生對象的關(guān)聯(lián)的機(jī)會(huì),降低了類之間的耦合性。6)設(shè)計(jì)模式(定義):過去設(shè)計(jì)當(dāng)中的經(jīng)驗(yàn)總結(jié);通常由類與對象組成;對某種思想或

23、原則的應(yīng)用設(shè)計(jì)模式4要素:名稱,問題,解決和效果(百科)一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。7)MVC(畫出樣子、特點(diǎn)):將核心業(yè)務(wù)模型與表現(xiàn)形式和使用這個(gè)模型的控制邏輯分離開來允許多個(gè)視圖分享同一個(gè)業(yè)務(wù)數(shù)據(jù)模型使得支持多用戶的實(shí)現(xiàn)、測試和維護(hù)等變得容易至少畫出這個(gè)圖最好畫出這個(gè)圖模塊化結(jié)構(gòu)化的內(nèi)聚與耦合類型;內(nèi)聚(按程度由低到高排列):偶然內(nèi)聚:代碼之間沒有任何相關(guān)性(statements are together by coincidence)沒有共同的目的 例子: A = B + CGET

24、CARDPUT OUTPUTIF B = 4 THEN E = 0 邏輯內(nèi)聚:邏輯相似Some logical connection impliedexample - EDIT ALL DATAIf this is the highest form of binding in the module, then will get intertwined codeEDIT: PROC (TYPE, DATA)/* do some common edits */IF TYPE = “A”THEN /* edit by type A rules */IF TYPE = “B”THEN /* edit

25、by type B rules */* do some more common edits */時(shí)間內(nèi)聚:跟邏輯內(nèi)聚相似,但是在時(shí)間上有聯(lián)系,比邏輯內(nèi)聚耦合簡單Read routing data, set up tableLook up distance between two airports 基于“定義使用”關(guān)系b.單線程控制c. 隱式的子系統(tǒng)結(jié)構(gòu)=子程序集成進(jìn)模塊中d. Hierarchical reasoning=子系統(tǒng)的正確性基于調(diào)用的正確性優(yōu)點(diǎn)=處理過程清晰,易于理解=很強(qiáng)的正確性控制缺點(diǎn)=難于改變和重用=處理不好會(huì)變成公共耦合應(yīng)用場景 =順序化處理系統(tǒng)=對正確性要求高的系統(tǒng)面向?qū)?/p>

26、象(數(shù)據(jù)抽象):利用封裝實(shí)現(xiàn)信息隱藏和可修改,只保留有限接口Components: object 或者 module Connectors: function 或者invocations (methods).Constraints: a. 數(shù)據(jù)表示對其他對象隱藏對象必須保證數(shù)據(jù)表示的一致性每個(gè)對象都是自治的優(yōu)點(diǎn)因?yàn)閷ο箅[藏了數(shù)據(jù)表示,所以能夠在不影響客戶的情況下修改實(shí)現(xiàn)=數(shù)據(jù)隱藏(internal data representations are not visible to clients)可以將系統(tǒng)設(shè)計(jì)成自治的相互作用的代理集合=Methods are invoked on the obj

27、ects, maintaining invariants. =Can decompose problems into sets of interacting agents缺點(diǎn)需要在知道對象identity的情況下才能完成方法調(diào)用=When the identity of an object changes it is necessary to modify all objects that invoke it.可能產(chǎn)生副作用,如:= E.g., A and B both use object C, then Bs affect on C look like unexpected side ef

28、fects to A.應(yīng)用=Suitable for applications in which a central issue is identifying and protecting related bodies of information (data).=數(shù)據(jù)表示和相關(guān)操作被封裝在抽象數(shù)據(jù)類型中=Examples:抽象數(shù)據(jù)類型 Pipe and Filter Architectural Style:Components:過濾器Connectors:管道Constraints:a.任何兩個(gè)過濾器不會(huì)共享數(shù)據(jù)b. 過濾器不知道前后的過濾器,只知道自己的輸入輸出c. 正確性不依賴于過濾器的

29、順序Advantages= 易于理解Easy to understand the overall input/output behavior of a system as a simple composition of the behaviors of the individual filters.= 支持復(fù)用They support reuse, since any two filters can be hooked together, provided they agree on the data that is being transmitted between them.= 易于增強(qiáng)和

30、維護(hù) Systems can be easily maintained and enhanced, since new filters can be added to existing systems and old filters can be replaced by improved ones.= 允許吞吐量、死鎖等特別分析They permit certain kinds of specialized analysis, such as throughput and deadlock analysis.= 支持并發(fā)The naturally support concurrent exec

31、ution.Disadvantages= 不善于處理交互系統(tǒng)Not good for handling interactive systems, because of their transformational character.= 數(shù)據(jù)傳輸需要額外的空間Transferring data need additional space = 過度的語法分析和解析降低了性能,并且增加了實(shí)現(xiàn)過濾器的復(fù)雜性Excessive parsing and unparsing leads to loss of performance and increased complexity in writing t

32、he filters themselves.Applicable to 應(yīng)用=對給定的數(shù)據(jù)需要執(zhí)行一系列相互獨(dú)立的運(yùn)算的系統(tǒng)=Examples:Batch Sequential Programs.批處理UNIX shell commands data. pl | grep i fdep | grep -v FDep | lessCompilers: Lexical Analysis - parsing - semantic analysis - code generation Signal ProcessingSpecializations特點(diǎn)= Pipelines限定了線性過濾器的拓?fù)溥壿?

33、 Batch Sequential將所有的輸入數(shù)據(jù)處理完了才能輸出Implicit invocation (Event based ) StyleComponents: agent (objects, procedures, processes)Connectors: broadcast mediums (Events Handler)Rules: 不是直接調(diào)用程序,而是: =一個(gè)部件可以聲明或者發(fā)布一個(gè)或多個(gè)事件=系統(tǒng)中的其他部件可以注冊感興趣的時(shí)間,將自己的Procedure與該事件關(guān)聯(lián) =當(dāng)事件聲明時(shí),the broadcasting system(conncter)調(diào)用注冊過事件的程序

34、Constraints:a. 拋出事件的部件不知道事件會(huì)被誰接受b.部件不能對處理的順序做任何假設(shè)c. Components cannot make assumptions about what processing will occur as a result of their events (perhaps no component will respond).部件不能假設(shè)事件的結(jié)果是什么樣的操作(有可能沒有部件響應(yīng))Advantages= 支持復(fù)用(只要登記下就可以使用部件)Provides strong support for reuse since any component can

35、 be introduced into a system simply by registering it for the events of that system.= 簡化系統(tǒng)演化Eases system evolution since components may be replaced by other components without affecting the interfaces of other components in the system.Disadvantages= 難保證完整性和正確性= 難以測試和診斷= 當(dāng)一個(gè)部件聲明一個(gè)事件:不知道誰會(huì)響應(yīng),響應(yīng)順序,何時(shí)完成

36、Applicable to = 松散耦合的系統(tǒng).Suitable for applications that involve loosely-coupled collection of components, each of which carries out some operation and may in the process enable other operations.= Examples debugging systems (listen for particular breakpoints)database management systems (for data integ

37、rity checking) graphical user interfacesSpecializationsRepository (Blackboard) StyleComponents:代表系統(tǒng)狀態(tài)的中間數(shù)據(jù)結(jié)構(gòu);操作中心數(shù)據(jù)結(jié)構(gòu)的獨(dú)立部 件集合Connectors: 典型過程調(diào)用或者直接內(nèi)存訪問Constraints:a. 所有的Agent相互獨(dú)立b. 每個(gè)agent強(qiáng)依賴于共享數(shù)據(jù)c. agent檢查數(shù)據(jù)狀態(tài)并采取反應(yīng) Push VS Pull (Repository vs. Blackboard)前者使用“pull”模型,部件從repository中讀取數(shù)據(jù)或者向其寫數(shù)據(jù);如:網(wǎng)絡(luò)日

38、志;易于實(shí)現(xiàn),但是clients會(huì)變得非常復(fù)雜而且必須輪詢數(shù)據(jù)后者使用“push”模型,部件登記數(shù)據(jù)預(yù)定,當(dāng)數(shù)據(jù)準(zhǔn)備好后,部件收到通知;如,聊天室;Client的編碼簡化了;但是需要復(fù)雜的InfrastructureAdvantages= 在存儲(chǔ)大量數(shù)據(jù)的情況下很有效= 共享模型以repository(在空間性能上很好)的形式發(fā)布= 減少了復(fù)制復(fù)雜數(shù)據(jù)的需要(在時(shí)間性能上很好)= 管理集中化備份(提高容錯(cuò)能力)安全(加密)并發(fā)控制(時(shí)間性能好)Disadvantages=需要對數(shù)據(jù)模型達(dá)成共識(shí)= Blackboard或成為瓶頸=數(shù)據(jù)演化成本高.Applicable to = 系統(tǒng)的中心點(diǎn)是建立

39、、維護(hù)一個(gè)復(fù)雜的中心信息體*典型情況:信息必須以各種方式被控制。通常需要長持久性= Examples:databasesblackboard expert systemsprogramming environmentsLayered StyleComponents: collections of procedures or objects.Connectors: 在限制可見性下的 procedure calls or methodsConstraints:a. 系統(tǒng)有層次性,其中每一層為上層提供服務(wù)作為下層的客戶端不允許跨層 Advantages= Design:按照抽象層次設(shè)計(jì)(越上層抽象層

40、次越高)= Enhancement: 一層的變化最多影響上下兩層= Reuse:每一層在接口一定的情況下都能容易地改變實(shí)現(xiàn)Disadvantages= 不是所有的系統(tǒng)都能以層次式組織= 性能需求有可能需要高層功能與底層實(shí)現(xiàn)之間的耦合Applicable to =服務(wù)的主要類可以組織成層次式的應(yīng)用*特別當(dāng)應(yīng)用可以在層次上改變的情況,如交互、通信、硬件、平臺(tái)等= Example:Layered Communication Protocols: Each layer provides a substrate for communication at some level of abstraction

41、.Lower levels define lower levels of interaction, the lowest level being hardware connections (physical layer).Operating Systems UnixSpecializations= 處于效率因素,可能允許非相鄰的層直接交互通信,如跨層調(diào)用Model-View-Controller Style模型子系統(tǒng)被設(shè)計(jì)成不依賴于任何View和 Controller子系統(tǒng)模型子系統(tǒng)的狀態(tài)變化影響到View子系統(tǒng)Components: 模型組件負(fù)責(zé)維護(hù)領(lǐng)域信息并且將變化告知ViewView組件

42、負(fù)責(zé)顯示信息和將用戶動(dòng)作發(fā)送給ControllerController 改變模型狀態(tài)將用戶動(dòng)作映射到模塊更新 選擇回復(fù)的ViewConnectors: Procedure calls, Messages, Events, Direct memory accesses.Advantages=一個(gè)模型可以有多個(gè)獨(dú)立的Views=Views可以同步= 可置換的views and controllersDisadvantages= 復(fù)雜度增高= 從View訪問數(shù)據(jù)的效率不高= 有可能和UI工具不兼容Applicable to = Suitable for applications: 運(yùn)行時(shí)的UI變更,

43、改變UI不影響其他部分= Examples:Web applicationsPoint-to-Point Architecture Style在分布式系統(tǒng)中的異步消息機(jī)制松散耦合組件隨意加入或者離開CORBA/RMI 基于異步過程調(diào)用Requires referentially couplingObject must know about each otherRequires temporal couplingObjects must be active at the same time消息只有一個(gè)接受者Publish-Subscribe Architecture Style多個(gè)應(yīng)用需要接受同

44、一條信息(廣播)發(fā)布者和接收者松散耦合分發(fā)基于消息訂閱事件主題以層次性結(jié)構(gòu)租者Components:Publisher/SubscriberConnector:事件路由Event RoutersMakes intelligent use of subscription informationRouter infrastructure is complex and subject to failureEvent Router in a computerEvent Router in NetworkStructureClient-Server Architecture Style分布式系統(tǒng)的一個(gè)實(shí)

45、例組件是Clients和servers,servers不知道Clients的情況Clients 知道server的 identityConnectors are RPC-based interaction protocols有不同風(fēng)格的client-server如: File server, web server, ftp server, e-mail serverThree-Tier StyleThree subsystem layers:接口層 (or 前端) : 和用戶交互的子系統(tǒng)*contain interfaces, web pages, forms, etc. 應(yīng)用邏輯層: 包含處

46、理模塊 存儲(chǔ)層 ( or 后臺(tái)):處理數(shù)據(jù)查詢和與數(shù)據(jù)持久層的操作Like the client/server models with another layer added in between Provides separation of user interface and application logic.Peer to Peer Architecture StyleComponents自治既充當(dāng)服務(wù)器又充當(dāng)客戶端Connectors異步同步消息傳輸 (remote procedure calls)沒有共享內(nèi)存 (except as an optimization when the

47、configuration allows)Topology交互拓?fù)淇梢匀我獾貏?dòng)態(tài)地改變C/S的一個(gè)延展where: each subsystem can act as both a client and a serveri.e. both subsystems can request and provide services. 比C/S難實(shí)現(xiàn),因?yàn)椋?控制流更復(fù)雜 每個(gè)子系統(tǒng)有它自己的控制流,當(dāng)其他子系統(tǒng)請求時(shí),控制流必須同步 Examples: eMule, eDonkey, Gnutella, Freenet, On Share, etc. are examples of a P2P sy

48、stems a central server is used only to connect two client machines for the purposes of file sharing. the two client machines then communicated as peer-to-peer.Distributed Architecture StylesMiddleware-Oriented Distributed System Architecture StyleCombining StylesSystems are not usually developed acc

49、ording to a single, consistent idiom. Variations may occur at different levels of refinement/abstractionAn Example of Combining Styles比較:對于KWIC部分的比較 全局分析的步驟(背誦)(ppt7)全局分析從 軟件需求規(guī)格說明(SRS)得到 軟件體系結(jié)構(gòu)(SA)的 結(jié)構(gòu)視圖(structural views)。體系結(jié)構(gòu)設(shè)計(jì)是從需求到編碼實(shí)現(xiàn)的橋梁。體系結(jié)構(gòu)設(shè)計(jì)分過程為兩個(gè)基本的部分:1設(shè)計(jì)和描述系統(tǒng)的結(jié)構(gòu):使用多視圖表示。 使用4個(gè)互補(bǔ)的視圖來降低設(shè)計(jì)的復(fù)雜度和

50、理解體系結(jié)構(gòu) 不同的視圖有不同的關(guān)注點(diǎn)。2全局分析:全局分析產(chǎn)生的文檔產(chǎn)物描述了design decisions的上下文 和 邏輯依據(jù)。識(shí)別影響系統(tǒng)結(jié)構(gòu)的外部影響因素和關(guān)鍵性的需求。通過分析這些因素和需求得到解決的策略,以便體系結(jié)構(gòu)設(shè)計(jì)中將使用。SA設(shè)計(jì) 行為:同時(shí)包含這兩個(gè)部分;將全局分析和多視圖結(jié)構(gòu)結(jié)合:從功能需求初始化一個(gè)試圖的結(jié)構(gòu),然后根據(jù)strategies做出design decision,從而修改試圖。全局分析步驟分析影響因素:(約束 和 質(zhì)量因素)3步1識(shí)別和描述因素2描述因素,描述factors的靈活性和可變性特征3分析這些因素的影響開發(fā)策略:3步1 識(shí)別問題和影響因素2 開

51、發(fā)解決方案solution和具體策略strategies3識(shí)別相關(guān)策略因素factor(三種)Product factors(Function features,User interfaces,Performance,Security,Error tolerant)Organizational factors(Building or Buy ,Staff,Process,Tools,Cost,Time)Technological factors(Hardware,Software,Network,Platform,F(xiàn)ramework,Standard)全局分析的產(chǎn)物:Factor TableI

52、ssue CardStrategies全局分析核心思想(4點(diǎn))1 重視體 系結(jié)構(gòu)設(shè)計(jì)需求ADR。Global Analysis: Analyzing Factors) 2用 系統(tǒng)解決方案策略SSS將 體系結(jié)構(gòu)設(shè)計(jì)需ADR 同最終的 體系結(jié)構(gòu)模型(the structural models of the software architecture )聯(lián)系起來。(Global Analysis: Develop strategies)3 整合strategies,由SSS 開發(fā)得到 SA:可以參考4+1view模型 (Making decision to each view in accordin

53、g to SSS )4 ADR , SSS 將支持開發(fā)過程中的其它部分。6 根據(jù)分析類圖,建立基本的設(shè)計(jì)類圖(給分析類圖,給要求,做設(shè)計(jì))把參與者轉(zhuǎn)換為接口類添加參與者類:記錄與參與者有關(guān)的數(shù)據(jù)添加啟動(dòng)類:程序開始的位置轉(zhuǎn)換或添加控制器和協(xié)調(diào)器:控制并協(xié)調(diào)程序活動(dòng)的類添加實(shí)現(xiàn)數(shù)據(jù)類型的類:概念模型中包括的很多結(jié)構(gòu)和行為的類型,將他們作為數(shù)據(jù)類型來實(shí)現(xiàn)轉(zhuǎn)換或添加容器類:容納對象的集合轉(zhuǎn)換或添加工程設(shè)計(jì)關(guān)系:泛化關(guān)系、接口、接口實(shí)現(xiàn)關(guān)系、依賴關(guān)系等。7 有幾種控制流處理方式?進(jìn)行比較(集中,委托,分散,特點(diǎn)區(qū)別和比較;把7和8合起來,比如說給一個(gè)不好的順序圖是集中式控制的,結(jié)合grasp,重新建立

54、一個(gè)委托式的。)有幾種控制流處理方式?進(jìn)行比較(集中,委托,分散,特點(diǎn)區(qū)別和比較;把7和8合起來,比如說給一個(gè)不好的順序圖是集中式控制的,結(jié)合grasp,重新建立一個(gè)委托式的。)控制器在交互作用設(shè)計(jì)中具有重要的地位,因?yàn)樗鼈冊趨f(xié)作中是中心角色。它們通常是啟動(dòng)和結(jié)束交互作用,把任務(wù)委托給其他組件并返回結(jié)果的組件集中式:少數(shù)控制器做出所有重大的決定。非控制器組件只是保存數(shù)據(jù)或執(zhí)行簡單功能。 優(yōu)點(diǎn):易于判定決定是哪里做出來的,易于保證正確性(邏輯思路明確) 易于修改決策過程 缺點(diǎn):控制器可能變得太大,太復(fù)雜,難以理解,維護(hù),測試等等。這樣的控制器被稱為膨脹式控制器。其內(nèi)聚性不高,而且是大型模塊,這違

55、背了兩條模塊性設(shè)計(jì)原則 控制器可能把其他組件視為數(shù)據(jù)倉庫,只是在其中存儲(chǔ)或者從中檢索數(shù)據(jù)。這樣往往會(huì)增強(qiáng)耦合性,并破壞信息的隱藏,因此違背了另外兩條模塊性設(shè)計(jì)原則 適用情況:僅當(dāng)程序只需要做出少量的決定時(shí)才應(yīng)該使用集中式控制樣式規(guī)則:在交互作用設(shè)計(jì)中,避免使大多數(shù)消息都源自同一個(gè)組件。 使組件保持小型化。 確保不把操作職責(zé)都分配給少量組件。操作職責(zé)的集中是集中控制樣式的特征。 確保操作職責(zé)與數(shù)據(jù)職責(zé)一致。 集中式控制的順序示意圖:委托式:決策權(quán)分布在整個(gè)程序中,控制器做出事關(guān)全局的決定,并協(xié)調(diào)其他組件的活動(dòng),但把較低級(jí)別的決策委托給其他組件來做出。即只關(guān)心發(fā)起后面的決策并不關(guān)心,類似于中介代理

56、。 優(yōu)點(diǎn):控制器只與較少的組件耦合,程序的總體耦合性降低。在委托職責(zé)的時(shí)候,控制器不需要知道那些與受托組件協(xié)作的組件,因此降低了耦合性。信息得到更好的隱藏。與從組件中獲取數(shù)據(jù),修改數(shù)據(jù)之后再返回給組件不同,委托控制式鼓勵(lì)組件自己修改自己的數(shù)據(jù)使程序易于分層。正如我們以后將看到的那樣,分層體系結(jié)構(gòu)樣式是一種非常重要和強(qiáng)大的組織程序模塊的方式。委托控制樣式使分層的組織更易于實(shí)現(xiàn)。適用情況:委托控制樣式確實(shí)沒有任何缺點(diǎn),這是首選的控制樣式,尤其適合于面向?qū)ο蟮南到y(tǒng)。規(guī)則:使組件把盡可能多的低級(jí)任務(wù)委托出去。組件負(fù)責(zé)一些高級(jí)任務(wù),而完成高級(jí)任務(wù)通常需要完成若干低級(jí)任務(wù)。換句話說,可以把功能分解為更簡單

57、的功能。這些低級(jí)任務(wù)通常是通過協(xié)作完成。分散式(例如SOA&EJB):決策權(quán)廣泛散布在整個(gè)程序中,只有很少或者沒有組件做出自己的決策,識(shí)別出哪些組件式控制器是困難的。 在這樣的設(shè)計(jì)中,有很多容納少量數(shù)據(jù),擁有少量小型操作的小型組件。每項(xiàng)任務(wù)都必須通過數(shù)十個(gè)交互作用進(jìn)行跟蹤。 缺點(diǎn):理解控制流程很難。必須跟蹤大量的消息,才能弄清某項(xiàng)任務(wù)時(shí)如何完成的。這樣的設(shè)計(jì)既難以理解,又非常難以修改。 當(dāng)把組件分割得太小時(shí),他們往往不能獨(dú)立做任何事情,結(jié)果就是耦合性增強(qiáng)。 隱藏信息是困難的,因?yàn)槊總€(gè)組件的工作過程嚴(yán)重依賴其他組件的實(shí)現(xiàn)方式 內(nèi)聚性差(低內(nèi)聚) 有些模塊化原則不能被滿足。 規(guī)則:避免每個(gè)組件都需

58、要發(fā)送很多信息的交互(如果每個(gè)對象都需要發(fā)出很多消息,則表明控制樣式過于分散)Demeter規(guī)則: 對象的操作只應(yīng)該給下列實(shí)體發(fā)送消息: 對象obj; Obj的屬性; 該操作的實(shí)參; 作為該操作實(shí)參或obj屬性屬性的某個(gè)集合的元素; 該操作創(chuàng)建的對象; 全局類或全局對象。例子應(yīng)用:查看書上335(6和8結(jié)合,分析類圖,告訴你有哪些職責(zé)要分配到分析類圖里面去,讓你用grasp方法來做一個(gè)設(shè)計(jì)類,必須準(zhǔn)確的告訴每一個(gè)方法是什么類。grasp不光是方法的分類,有的時(shí)候會(huì)出現(xiàn)新的類)8 GRASP模式(重點(diǎn)掌握)對外部事件交互,應(yīng)該如何處理?(控制器模式)對給定場景,判斷職責(zé)的分配。(通常給一個(gè)系統(tǒng)順

59、序圖,每個(gè)箭頭都是一個(gè)職責(zé),每個(gè)職責(zé)怎么分配,職責(zé)通常需要分解,怎么分解看上課例子)GRASPGeneral responsibility assignment software pattern通用 職責(zé)分配 軟件模式GRASP不是具體的設(shè)計(jì)模式,而是對象設(shè)計(jì)的基本原則。GRASP關(guān)注 對象設(shè)計(jì)的重要方面 和 類的職責(zé)分配, 不強(qiáng)調(diào) 體系結(jié)構(gòu)設(shè)計(jì)。GRASP用 職責(zé)設(shè)計(jì)對象。9個(gè)基本模式: 1.信息專家(Information expert)2.創(chuàng)建者(Creator)3.高內(nèi)聚(High Cohesion) 4.低耦合(Low Coupling) 5.控制器(Controller) 7.純虛

60、構(gòu)(Pure Fabrication) 8.間接性(Indirection) 6.多態(tài)性(Polymorphism) 9.差異性保護(hù)(Protected Variations) 高聚合,低耦合 面向?qū)ο蟮淖罡咴瓌t!多態(tài) Adapter, Command, Composite, Proxy, State, and Strategy模式其實(shí)都使用多態(tài)來實(shí)現(xiàn)。純虛構(gòu)行為對象,功能為中心的對象。Adapter, Strategy, Command都是這一模式的具體實(shí)現(xiàn)。間接性計(jì)通過引入中間層加以解決 ;Adapter, Bridge, Facade, Observer, Mediator,都是具體實(shí)現(xiàn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論