




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、設(shè)計準(zhǔn)則I:正確性和健壯性1. 正確性:每個項目都要滿足指定的需求,然后一起滿足所有應(yīng)用程序的需求,設(shè)計的正確性一般是指充分性,實現(xiàn)正確性的正式方法是依靠數(shù)學(xué)邏輯,非正式方法是判斷設(shè)計是否滿足所需的功能,當(dāng)進(jìn)入詳細(xì)設(shè)計階段時,經(jīng)常采用正式方法來判斷正確性。2. 模塊可是類或者類的包,包的接口和類的接口不同,包不能被實例化,通過包來使用接口的一種方法是利用包中指定對象來提供相應(yīng)的接口。3. 為了模塊化特定的應(yīng)用程序,在高層需要創(chuàng)建包,在底層需要創(chuàng)建類4. 設(shè)計中用到兩種類:領(lǐng)域類和非領(lǐng)域類,一般是從領(lǐng)域類開始類的選擇,然后擴展到非領(lǐng)域類,非領(lǐng)域類通常用于概括領(lǐng)域類。5. 健壯性:防止錯誤輸入,防
2、止開發(fā)錯誤;提高健壯性的辦法:檢查輸入、初始化、參數(shù)傳遞技術(shù)、檢查參數(shù)是否違反約束的方法、在類中捕獲參數(shù)、包裝參數(shù)、強化意圖。設(shè)計準(zhǔn)則II 靈活性、可重用性、高效性1. 靈活性:在設(shè)計時通常要考慮到將來的變化;增加新功能要依據(jù)其上下文和應(yīng)用范圍2. 可重用性:一個方法相對于上下文環(huán)境越獨立,其可重用性就越高;完全指定、避免不必要的封裝類耦合、讓名字更具表達(dá)性、解釋算法。3. 高效性:應(yīng)用程序必須在指定時間內(nèi)完成特定的功能,同樣,對內(nèi)存容量也有一定的要求設(shè)計模式引言:1. 設(shè)計目標(biāo)是:靈活性、健壯性、可重用性2. 設(shè)計原則:面向接口編程的原則(面向接口編程而不是面向?qū)崿F(xiàn)編程)、可變性封裝、開閉原
3、則(對擴展開放,對修改關(guān)閉)、里氏替換原則(適用于父類,但不一定適用子類)、組合/聚合原則(盡量使用組合聚合/聚合,盡量不使用繼承);接口隔離原則(避免接口污染)、依賴倒轉(zhuǎn)原則(高層低層依賴于抽象、細(xì)節(jié)依賴于抽象)、迪米特原則(不和陌生人說話)、單一原則3. 模式的四個基本要素:問題(描述了應(yīng)該在何時使用模式)、解決方案(描述了設(shè)計的組成成分)、效果(描述了模式應(yīng)用的效果及使用模式應(yīng)該權(quán)衡的問題)、模式名稱4. 設(shè)計模式分類:按照目的可以分為:創(chuàng)建型、結(jié)構(gòu)型、行為型 按照范圍可以分為:類模式、對象模式5. 模式和框架的區(qū)別:1) 設(shè)計模式比框架更抽象2) 設(shè)計模式是比框架更小的體系結(jié)構(gòu)元素3)
4、 框架比設(shè)計模式更加特例化創(chuàng)建型模式:1. 創(chuàng)建型模式包括抽象工廠模式、生成器模式、工廠模式、原型模式、單件模式2. 創(chuàng)建型模式抽象了實例化過程,它們幫助一個系統(tǒng)獨立于如何創(chuàng)建、組合和表示它的那些對象3. 一個類創(chuàng)建型模式使用繼承改變被實例化的類,而一個對象創(chuàng)建型模式將實例化委托給另一個對象。4. 隨著系統(tǒng)演化地越來越依賴于對象復(fù)合而不是類繼承,創(chuàng)建型模式變得更為重要5. 創(chuàng)建型模式在什么被創(chuàng)建、誰創(chuàng)建它、它是怎樣被創(chuàng)建的以及何時創(chuàng)建這些方面給予很大的靈活性6. 抽象工廠模式:意圖:提供一個創(chuàng)建一系列相關(guān)或相互依賴對象的接口而不需要指定他們具體的類別名:KIT適用性:1) 一個系統(tǒng)不應(yīng)當(dāng)依賴于
5、產(chǎn)品類實例如何被創(chuàng)建、組合和表達(dá)的細(xì)節(jié)2) 這個系統(tǒng)的產(chǎn)品有多余一個的產(chǎn)品族,而系統(tǒng)只消費其中某一個族的產(chǎn)品3) 同屬于一個產(chǎn)品族的產(chǎn)品是在一起使用的4) 系統(tǒng)提供一個產(chǎn)品類的庫,所有產(chǎn)品以同樣的接口實現(xiàn),從而使客戶端不依賴于實現(xiàn)參與者:抽象工廠角色(核心)、具體工廠(在客戶端的調(diào)用下創(chuàng)建實例)、抽象產(chǎn)品(所擁有的共同接口)、具體產(chǎn)品效果:1)分離了具體的類 2)使得易于交換產(chǎn)品系列 3)有利于產(chǎn)品的一致性 4)難以支持新種類的產(chǎn)品實現(xiàn):1)將工廠作為一個單件 2)創(chuàng)建產(chǎn)品 3)定義可擴展的工廠相關(guān):AbstractFactory類通常用工廠方法實現(xiàn),一個具體工廠通常是一個單件工廠方法模式:意
6、圖:定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪個類。Factory Method使一個類的實例化延遲到其子類別名:虛構(gòu)造器適用性: 1)當(dāng)一個類不知道它所必須創(chuàng)建的對象的類的時候 2)當(dāng)一個類希望由他的子類來指定他所創(chuàng)建的對象的時候效果: 1)多態(tài)性: 客戶代碼可以做到與特定應(yīng)用無關(guān),適用于任何實體類 2)子類提供掛鉤。基類為工廠方法提供缺省實現(xiàn),子類可以重寫新的實現(xiàn),也可以繼承父類的實現(xiàn)。- 加一層間接性,增加了靈活性 3)封裝性好,擴展性好,屏蔽產(chǎn)品類 4)需要Creator和相應(yīng)的子類作為factory method的載體,如果應(yīng)用模型確實需要creator和子類存在,則很好;否則的
7、話,需要增加一個類層次單件模式:意圖:保證一個類有且只有一個實例,并提供一個訪問它的全局訪問點適用性:1)當(dāng)類只能有一個實例而且客戶可以從一個眾所周知的訪問點訪問它2) 當(dāng)這個唯一實例應(yīng)該是通過子類化可擴展的,并且客戶應(yīng)該無需更改代碼就能使用一個擴展類的實例優(yōu)點:1)對唯一實例的受控訪問 2)縮小名空間 3)允許對操作和表示的精化 4)比類操作更靈活使用單件模式的要點:單件模式中的實例構(gòu)造器可以設(shè)置為protected 以允許子類派生; 單件模式只考慮到了對象創(chuàng)建的管理,沒有考慮對象銷毀的管理。實現(xiàn):保證一個唯一的實例;創(chuàng)建單件類的子類/本質(zhì):內(nèi)存中只能有一個對象/案例:定時器,計數(shù)器/使用場
8、景:一個項目只要一個共享訪問點和共享數(shù)據(jù);創(chuàng)建對象消耗資源比較多,如IO操作和數(shù)據(jù)庫讀取/注意:線程安全public sealed class Singleton private static Singleton _singleton = null; private static readonly object _synLock = new object(); private Singleton() public static Singleton GetInstance() lock (_synLock) if (_singleton=null) _singleton = new Single
9、ton(); return _singleton; 結(jié)構(gòu)型模式:1. 結(jié)構(gòu)型模式涉及到如何組合類和對象以獲得更大的結(jié)構(gòu)。2. 結(jié)構(gòu)型類模式采用繼承機制來組合接口或者實現(xiàn)。3. 結(jié)構(gòu)型模式包括:適配器模式(類對象)、組合模式(對象)、裝飾模式(對象)4. 適配器模式:意圖:將一個類的接口轉(zhuǎn)化為客戶希望的另外一個接口,Adapter模式使得原本由于接口不兼容而不能夠在一起工作的類可以一起工作別名:包裝器適用性:1)想使用一個已經(jīng)存在的類,但接口不符合需要2) 想創(chuàng)建一個可復(fù)用的類,該類可以和其他不相關(guān)的類和不可預(yù)見的類協(xié)同工作3) 想使用一些已經(jīng)存在的類,但不可能對每一個都子類化以匹配他們的接口,
10、對象適配器可以可以適配他們的父類接口結(jié)構(gòu):類適配器(使用多重繼承) 對象適配器(使用對象組合)效果:類適配器:1)用一個具體的類適配Adaptee和Target,當(dāng)想要匹配一個類及他的子類的時候,類Adapter將不再適用 2)Adapter可以重新定義Adaptee的部分方法 3)僅僅引入了一個對象,不需要額外的指針對象適配器:1)允許Adapter和一個或者多個Adaptee進(jìn)行適配,Adapter可以一次性給多個Adaptee添加功能2) 使得重新定義Adaptee的部分希望變得困難注意事項:1)Adapter的匹配程度 2)可插入的Adapter 3)使用雙向適配器通過透明操作實現(xiàn):可
11、插入的適配器的實現(xiàn)方法:使用抽象操作、使用代理對象、參數(shù)化的適配器組合模式:意圖:將對象組合成數(shù)結(jié)構(gòu)以表示“整體部分”結(jié)構(gòu),組合模式使得用戶對單個對象和組合對象的使用具有一致性適用性:1)想表示對象的“整體部分”的結(jié)構(gòu)2) 希望用戶忽略組合對象與單個對象的不同,用戶將統(tǒng)一地使用組合結(jié)構(gòu)中的對象效果:1)通過遞歸組合,在客戶端代碼中,任何用到基本對象的地方都可以使用組合對象2) 簡化客戶代碼,客戶可以一致地使用組合結(jié)構(gòu)和單個對象3) 使得更容易添加新類型的組件4) 設(shè)計一般化,由于容易添加新組件,也將容易帶來新問題裝飾模式:意圖:動態(tài)地給一些對象添加一些額外的職責(zé)。別名:包裝器模式適用性:1)在
12、不影響其他對象的情況下,以動態(tài)、透明的方式給單個對象添加職責(zé)2) 處理那些可以撤銷的職責(zé)3) 當(dāng)不能采用生成子類的方法進(jìn)行擴充時。效果:1)比靜態(tài)繼承更靈活 2)避免在層次結(jié)構(gòu)高層的類有太多的特征 3)Decorator余它的Component不一樣 4)有許多小對象使用注意事項:1)接口的一致性2)省略抽象的Decorator類 3)保持Component類的簡單性 行為模式:迭代器模式:意圖:提供一種方法順序訪問一個集合對象中的各個元素,而不暴露該對象的內(nèi)部表示別名:游標(biāo)適應(yīng)性:1)訪問一個聚合對象的內(nèi)容而無需暴露它的內(nèi)部表示2) 支持對聚合對象的多重遍歷3) 支持多重迭代效果:1)它支持
13、以不同的方式遍歷一個聚合 2)簡化了聚合的接口 3)在同一個聚合上可以有多個遍歷觀察者模式:意圖:定義對象間的一對多的關(guān)系,當(dāng)一個對象的狀態(tài)發(fā)生變化時,所有依賴于他的對象都得到通知并被自動更新別名:依賴,發(fā)布訂閱適用性:1)當(dāng)一個抽象模式有兩個方面,其中一個方面依賴于另一個方面,將這二者封裝在獨立的對象中以使它們可以各自獨立地改變及復(fù)用2) 當(dāng)對一個對象的改變需要同時改變其他對象,而不知道有多少對象有待改變3) 當(dāng)一個對象必須通知其他對象,但又不能假定其他對象是誰效果:1)目標(biāo)和觀察者間的抽象耦合 2)支持廣播通信 3)意外的更新狀態(tài)模式:意圖:允許一個對象在其內(nèi)部狀態(tài)發(fā)生改變時改變了它的詢問
14、,對象看起來似乎改變了它的類別名:狀態(tài)對象適用性:1)一個對象的行為取決于他的狀態(tài),并且它必須在運行時刻根據(jù)狀態(tài)改變它的行為2) 一個操作中含有龐大的多分支語句,并且這些分支依賴于該對象的狀態(tài)效果:1)將有特定效果的行為局部化,并將不同狀態(tài)的行為分割開來 2)使得狀態(tài)轉(zhuǎn)換顯示化 3)State對象可被共享體系結(jié)構(gòu):定義:軟件體系結(jié)構(gòu)包括構(gòu)成系統(tǒng)的設(shè)計元素的描述,設(shè)計元素的交互,設(shè)計元素組合的模式,以及這些模式中的約束。意義:1)體系結(jié)構(gòu)是風(fēng)險承擔(dān)者進(jìn)行交流的手段 2)體系結(jié)構(gòu)有助于系統(tǒng)級關(guān)注點的理解 3)體系結(jié)構(gòu)是早期設(shè)計決策的體現(xiàn) 4)軟件體系結(jié)構(gòu)是可傳遞和可重用的模型作用:軟件系統(tǒng)的體系結(jié)
15、構(gòu)定義系統(tǒng)由計算構(gòu)件和構(gòu)件之間的相互作用組成;體系結(jié)構(gòu)還指出了系統(tǒng)需求和已構(gòu)建系統(tǒng)的元素之間的對應(yīng)關(guān)系,能為設(shè)計方案的選擇提供基本原則。研究內(nèi)容:1)通過提供一種新的體系結(jié)構(gòu)描述語言(Architectural Description Language)解決體系結(jié)構(gòu)描述問題2) 體系結(jié)構(gòu)領(lǐng)域知識的總結(jié)性研究。3) 針對特定領(lǐng)域的框架的研究。4) 軟件體系結(jié)構(gòu)形式化支持的研究。框架、體系結(jié)構(gòu)、設(shè)計模式三者的比較:1) 設(shè)計模式是對在某種環(huán)境中反復(fù)出現(xiàn)的問題以及解決該問題的方案的描述,比框架更抽象;2) 框架可用代碼表示,也能直接執(zhí)行或復(fù)用,而對模式而言只有實例才能用代碼表示3) 設(shè)計模式是比框架
16、更小的元素,一個框架中往往含有一個或多個設(shè)計模式,框架總是針對某一特定應(yīng)用領(lǐng)域,但同一模式卻可適用于各種不同的應(yīng)用。4) 體系結(jié)構(gòu)風(fēng)格描述了軟件系統(tǒng)的整體組織結(jié)構(gòu),它獨立于實際問題。而設(shè)計模式和應(yīng)用框架更加面向具體問題。常見的體系結(jié)構(gòu)的優(yōu)缺點:兩層C/S結(jié)構(gòu):優(yōu)點:1)強大的數(shù)據(jù)操作和事務(wù)處理能力,模型思想簡單,易于人們理解和接受。 2)硬件和軟件的變化顯示出極大的適應(yīng)性和靈活性,而且易于對系統(tǒng)進(jìn)行擴充和縮小 3)大的應(yīng)用處理任務(wù)分布到許多通過網(wǎng)絡(luò)連接的低成本計算機上,以節(jié)約大量費用。缺點:開發(fā)成本較高、客戶端程序設(shè)計復(fù)雜、信息內(nèi)容和形式單一、用戶界面風(fēng)格不一、軟件移植困難、軟件維護(hù)和升級困難
17、、新技術(shù)不能輕易應(yīng)用三層C/S結(jié)構(gòu): 優(yōu)點:1)允許合理地劃分三層結(jié)構(gòu)的功能,使之在邏輯上保持相對獨立性,能提高系統(tǒng)和軟件的可維護(hù)性和可擴展性 2)允許更靈活有效地選用相應(yīng)的平臺和硬件系統(tǒng)。并且這些平臺和各個組成部分可以具有良好的可升級性和開放性。 3)應(yīng)用的各層可以并行開發(fā) 4)為嚴(yán)格的安全管理奠定了堅實的基礎(chǔ)缺點:1)三層C/S結(jié)構(gòu)各層間的通信效率若不高,即使分配給各層的硬件能力很強,其作為整體來說也達(dá)不到所要求的性能 2)設(shè)計時必須慎重考慮三層間的通信方法、通信頻度及數(shù)據(jù)量。這和提高各層的獨立性一樣是三層C/S結(jié)構(gòu)的關(guān)鍵問題。B/S結(jié)構(gòu):優(yōu)點:1)基于B/S體系結(jié)構(gòu)的軟件,系統(tǒng)安裝、修改
18、和維護(hù)全在服務(wù)器端解決,達(dá)到了“零客戶端”的功能,很容易在運行時自動升級。2) B/S體系結(jié)構(gòu)還提供了異種機、異種網(wǎng)、異種應(yīng)用服務(wù)的聯(lián)機、聯(lián)網(wǎng)、統(tǒng)一服務(wù)的最現(xiàn)實的開放性基礎(chǔ)缺點:1)B/S體系結(jié)構(gòu)缺乏對動態(tài)頁面的支持能力,沒有集成有效的數(shù)據(jù)庫處理功能2) B/S體系結(jié)構(gòu)的系統(tǒng)擴展能力差,安全性難以控制。3) 采用B/S體系結(jié)構(gòu)的應(yīng)用系統(tǒng),在數(shù)據(jù)查詢等響應(yīng)速度上,要遠(yuǎn)遠(yuǎn)地低于C/S體系結(jié)構(gòu)4) 數(shù)據(jù)的動態(tài)交互性不強,不利于在線事務(wù)處理(OLTP)應(yīng)用C/S與B/S混合之“內(nèi)外有別”模型:優(yōu)點:外部用戶不直接訪問數(shù)據(jù)庫服務(wù)器,能保證企業(yè)數(shù)據(jù)庫的相對安全;企業(yè)內(nèi)部用戶的交互性較強,數(shù)據(jù)查詢和修改的響
19、應(yīng)速度較快缺點:企業(yè)外部用戶修改和維護(hù)數(shù)據(jù)是速度較慢,較煩瑣,數(shù)據(jù)的動態(tài)交互性不強C/S與B/S混合之“查改有別”模型:優(yōu)點:優(yōu)點體現(xiàn)了B/S體系結(jié)構(gòu)和C/S體系結(jié)構(gòu)的共同優(yōu)點,即B/S對客戶端要求不高,只需要查詢的客戶端只要安裝瀏覽器即可,提供了開放性,實現(xiàn)修改的終端和服務(wù)器之間采取C/S結(jié)構(gòu)。缺點:外部用戶能直接通過Internet連接到數(shù)據(jù)庫服務(wù)器,企業(yè)數(shù)據(jù)容易暴露給外部用戶,給數(shù)據(jù)安全造成了一定的威脅體系結(jié)構(gòu)案例:1.名稱:上下文關(guān)鍵字解決方案:1)基于功能分解,可以共享訪問數(shù)據(jù)表示;2) 基于隱藏設(shè)計決策的分解2. 名稱:儀器軟件解決方案:1)改進(jìn)后的管道過濾器模型2) 專用化模型3. 名稱:移動機器人解決方案:1)控制環(huán)路2) 分層體系結(jié)構(gòu)3) 隱式調(diào)用4) 黑板體系結(jié)構(gòu)體系結(jié)構(gòu)評估方法:1) SAAM(軟件架構(gòu)分析方法)體系結(jié)構(gòu)的描述、場景的形成、場景的分類和優(yōu)先級的確定、對間接場景的單個評估、場景相互作用的評估、形成總體評估2) ATAM(體系結(jié)構(gòu)權(quán)衡分析方法)步驟:1)描述 :描述ATAM方法 描述商業(yè)動機、描述體系結(jié)構(gòu) 2)調(diào)查與分析: 確定體系結(jié)構(gòu)方法、生成質(zhì)量屬性效用樹、分析
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國木制鳥窩數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國有源立體聲音音箱數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國智能航空障礙燈行業(yè)投資前景及策略咨詢研究報告
- 2025至2030年中國日式碗行業(yè)投資前景及策略咨詢報告
- 2025至2030年中國無糖蔬菜餅干市場分析及競爭策略研究報告001
- 2025至2030年中國方道釘行業(yè)投資前景及策略咨詢報告
- 2025至2030年中國整體硬質(zhì)合金圓車刀行業(yè)發(fā)展研究報告
- 課堂上分享旅游經(jīng)驗
- 砂輪機使用規(guī)范
- 迅速處理急性醫(yī)療事件的應(yīng)急措施
- DB32∕T 2677-2014 公路涉路工程安全影響評價報告編制標(biāo)準(zhǔn)
- 地下建筑結(jié)構(gòu)知到智慧樹章節(jié)測試課后答案2024年秋南京工業(yè)大學(xué)
- 2025年北京鐵路局集團(tuán)招聘筆試參考題庫含答案解析
- 2024年安陽職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫
- 食品中蠟樣芽孢桿菌的檢驗課件
- 食為天:2024中國食品飲料行業(yè)白皮書
- 2025南水北調(diào)東線山東干線限責(zé)任公司人才招聘30人管理單位筆試遴選500模擬題附帶答案詳解
- 電力行業(yè)電力調(diào)度培訓(xùn)
- 2024-2030年中國乳腺疾病預(yù)防與治療行業(yè)深度調(diào)查及投資價值研究報告版
- 《加強基層工會組織建設(shè) 規(guī)范基層工會換屆選舉》課件
- 職工代表提案培訓(xùn)
評論
0/150
提交評論