版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、? 第一章 UML 概述? UML ( UML 是 Unified Modeling Language 的縮寫)是用來對軟件密集系統(tǒng)進行可 視化建模的一種語言。 UML 為面向?qū)ο箝_發(fā)系統(tǒng)的產(chǎn)品進行說明、可視化、 和編制 文檔的一種標準語言。? UML 最適于數(shù) 據(jù)建模,業(yè)務建模,對象建模,組件建模 。? 作為一種建模語言, UML 的定義包括 UML 語義和 UML 表示法 兩個部分。? UML 語義: 描述基于 UML 的精確元模型定義。元模型為 UML 的所有元素在語 法和語義上提供了簡單、 一致、 通用的定義性說明, 使開發(fā)者能在語義上取得一致, 消除了因人而異的最佳表達方法所造成的影
2、響。此外 UML 還支持對元模型的擴展 定義。? UML 表示法: 定義 UML 符號的表示法,為開發(fā)者或開發(fā)工具使用這些圖形符號 和文本語法,為系統(tǒng)建模提供了標準。這些圖形符號和文字所表達的是應用級的模 型,在語義上它是 UML 元模型的實例。? UML 中的的圖分為兩大類 :結構圖( structure diagram )和行為圖 。結構圖描繪系統(tǒng) 組成元素之間的靜態(tài)結構;行為圖描繪系統(tǒng)元素的動態(tài)行為。?1結構圖有下列幾種類型:? (1) 類圖? 類圖是使用 UML 建模時最常用的圖。它展示了系統(tǒng)中的靜態(tài)事物、它們的結構以 及它們之間的相互關系。這種圖的典型用法是描述系統(tǒng)的邏輯設計和物理設
3、計。?(2) 構件圖? 構件圖展示一組構件的組織和彼此間的依賴關系。構建圖說明系統(tǒng)如何實現(xiàn),軟件 系統(tǒng)內(nèi)構件如何協(xié)同工作。?(3) 對象圖? 對象圖展示系統(tǒng)中的一組對象。它是系統(tǒng)在某一時刻的快照。對象圖是類圖在某一 時刻的快照。?(4) 部署圖? 部署圖展示物理系統(tǒng)運行時的架構。 部署圖描述系統(tǒng)中的硬件和硬件上駐留的軟件。? UML2.0 新增了以下幾種結構圖:?(5) 組合結構圖? 組合結構圖展示模型元素的內(nèi)部結構。?(6) 包圖? 包圖描繪包之間的依賴關系(包是一個用于組織其他模型元素的通用模型元素)。?(7) 用例圖? 用例描述了系統(tǒng)的工作方式,以及系統(tǒng)能提供的服務用例圖描述了系統(tǒng)外部參
4、與 者如何使用系統(tǒng)提供的服務。?2 .行為圖有下列幾種:?(1) 活動圖? 活動圖顯示系統(tǒng)內(nèi)的活動流。通常需要使用活動圖描述不同的業(yè)務過程。?(2) 狀態(tài)圖? 狀態(tài)圖顯示一個對象的狀態(tài)和狀態(tài)之間的轉(zhuǎn)換。狀態(tài)圖中包括狀態(tài)、轉(zhuǎn)換、事件和 活動。狀態(tài)圖是一個動態(tài)視圖,對事件驅(qū)動的行為建模尤其重要。例如,可以利用 狀態(tài)圖描述一個電話路由系統(tǒng)中交換機的狀態(tài)。不同的事件可以令交換機轉(zhuǎn)移至不 同的狀態(tài),用狀態(tài)圖對交換機建模有助于理解交換機的動態(tài)行為。在UML2.0 中,狀態(tài)圖被稱作狀態(tài)機圖(state machine diagram)。?(3)合作圖? 合作圖是交互圖的一種,交互圖還包括順序圖(以及 UML
5、2.0中新定義的其他幾種 圖,稍后將介紹)。合作圖突出對象之間的合作與交互。在UML2.0中,合作圖被通信圖(communication diagram)所取代。?順序圖? 順序圖是另一種交互圖。順序圖強調(diào)一個系統(tǒng)中不同元素間傳遞消息的時間順序。? UML2.0又增加了下列幾種行為圖:?(1)時間圖? 時間圖也是一種交互圖。它描繪與交互元素的狀態(tài)轉(zhuǎn)換或條件變化有關的詳細時間 信息。?(2)交互概述圖? 交互概觀圖是一種高層視圖,用于從總體上顯示交互序列之間的控制流。? 在軟件開發(fā)活動中,UML主要用于兩個方面的建模:對業(yè)務建模和對要構造的軟件建模。?第2章UML語言體系UML執(zhí)行Peoplea
6、gebreath 0flyO圖2.2 People類表示圖25主動類的表示RadioShapeSizePriceTUmOnOTumOffOChange Chamel ()Change VoliaeO圖26用例“用戶登錄”的表示方法圖27協(xié)作“銷售房產(chǎn)圖28構件的表示圖29節(jié)點server的表示等待圖2門“等待”狀態(tài)的表示方法數(shù)據(jù)訪問圖212“數(shù)據(jù)訪問”包的表示方法圖2T3注釋符號圖214關聯(lián)關系圖2/5聚合關系和組合關系的表示方法泛化關系公交車圖2/6泛化關系的表示方法H2-18依鎖關系S2-19擴展關系的表示方法UML圖和視圖領域視圖圖結構靜態(tài)視圖類圖設計視圖復合結構圖、協(xié)作圖、構件圖用例視
7、圖用例圖動態(tài)狀態(tài)視圖狀態(tài)機圖活動視圖活動圖交互視圖順序圖、通信圖物理部署視圖部署圖模型管理模型管理視圖包圖持性描述包圖第4章對象圖萬物皆對象,對象有屬性和行為 對象具有狀態(tài)、行為和標識三個特點。?對象與類的區(qū)別? (1)對象是一個存在于時間和空間中的具體實體,而類是一個模型,該模 型抽象出對象的本質(zhì)” 一組公共屬性和一組公共方法。? (2)類是靜態(tài)的,對象是動態(tài)的;類是一般化,對象是個性化;類是定義, 對象是實例;類是抽象、對象是具體 。教學者學習者圖4-1對象圖李小平;P巳TS0I1 name = “李小平汁 birthday = 21 October 1983對象名冨性名二屬性值圖4-2對
8、象的表示(一)團4-5艱向*連接-其中,隊長、秘書和成員都是角色名稱.分別表示小王,小劉,小陳 在鏈接中充當?shù)慕巧?雙向鏈接如圖4-5所示口單向鏈接如圖4-6所示。瘢扌象目標對象* : Address:PersonDetails單郎連接第5章包圖?包的作用是:1)對語義上相關的元素進行分組2)定義模型中的“語義邊界”3)提供配置管理單元4)在設計時,提供并行工作的單元5)提供封裝的命名空間,其中所有名稱必須惟包名放在第二欄包名放在第一欄PageNameClassName-1ClassName-2嵌套包在第二欄畫岀所 包含的類圖形表示-包的可見性有3種:?“ +”表示 “ public ” “#
9、”表示protected ” “” 表示 “ privateClientServer+ OrderFonn -Order1:f+ DataBase+ Loggingfienice1GUIimporlRule+Window+ OrderRuks+ btjrm01圖86分支的表示圖8-5轉(zhuǎn)換的表示在實際應用中,如果活動的轉(zhuǎn)換是有條件的,我們就用分支與監(jiān)護條 件來表示轉(zhuǎn)換,如果一些活動是并發(fā)執(zhí)行的,我們就用分岔和匯合來 表示并發(fā)活動o分岔線和匯合線都使用加粗的水平線或垂直線段表示o分岔線分岔匯合線I %匯合訂單完成圖88訂單處理:窗口:打印機(初始化打印機取打印機數(shù)據(jù))(設墨打印頁面存頁面參數(shù)數(shù)據(jù))
10、/(傳送打印數(shù)據(jù)一收并保存打印數(shù)據(jù))(打印文件)執(zhí)行打E唏令)圖89標識泳道的活動圖圖810活動圖中的對象表示法圖8/2三種信號的表示法接收信號原型模式(Prototype Pattern)在面向?qū)ο笙到y(tǒng)中,使用原型模式來復制一個對象自身,從而克隆出多個與原型對象一模一樣的對象。在軟件系統(tǒng)中,有些對象的創(chuàng)建過程較為復雜,而且有時候需要頻繁創(chuàng)建,原型模式通過給出一個原型對象來指明所要創(chuàng)建的對象的類型,然后用復制這個原型對象的辦法創(chuàng)建出更多同類型的對象,這就是原型模式的意圖所在。txofotypcPrototypeProiotypeCtoneOp - prototype Clonc(Cone re
11、teProloly pelClontf) 9Concret0Proiotype2ClonpO ferum copy of sltreturn copy of self意圖:用原型實例指定創(chuàng)建對象的種類,并且通過拷貝這些原型創(chuàng)建新的對象。適用性: 當要實例化的類是在運行時刻指定時,例如,通過動態(tài)裝載;或者 為了避免創(chuàng)建一個與產(chǎn)品類層次平行的工廠類層次時;或者 當一個類的實例只能有幾個不同狀態(tài)組合中的一種時。建立相應數(shù)目的原型并克隆它們可能比每次用合適的狀態(tài)手工實例化該類更方便一些。在面向?qū)ο笙到y(tǒng)中,使用原型模式來復制一個對象自身,從而克隆出多個與 原型對象一模一樣的對象。在軟件系統(tǒng)中,有些對象的
12、創(chuàng)建過程較為復雜,而且有時候需要頻繁創(chuàng)建, 原型模式通過給出一個原型對象來指明所要創(chuàng)建的對象的類型,然后用復制這個原型對象的辦法創(chuàng)建出更多同類型的對象,這就是原型模式的意圖所在。原型模式應用于很多軟件中,如果每次創(chuàng)建一個對象要花大量時間,原型模 式是最好的解決方案。很多軟件提供的復制(Ctrl + C)和粘貼(Ctrl + V)操作就是原 型模式的應用,復制得到的對象與原型對象是兩個類型相同但內(nèi)存地址不同的對 象,通過原型模式可以大大提高對象的創(chuàng)建效率。適配器模式在軟件開發(fā)中采用類似于電源適配器的設計和編碼技巧被稱為適配器模式。通常情況下,客戶端可以通過目標類的接口訪問它所提 供的服務。有時,
13、現(xiàn)有的類可以滿足客戶類的功能需要, 但是它所提供的接口不一定是客戶類所期望的,這可能 是因為現(xiàn)有類中方法名與目標類中定義的方法名不一致 等原因所導致的。在這種情況下,現(xiàn)有的接口需要轉(zhuǎn)化為客戶類期望的接 口,這樣保證了對現(xiàn)有類的重用。如果不進行這樣的轉(zhuǎn) 化,客戶類就不能利用現(xiàn)有類所提供的功能,適配器模 式可以完成這樣的轉(zhuǎn)化。在適配器模式中可以定義一個包裝類,包裝不兼容接口 的對象,這個包裝類指的就是適配器(Adapter),它所包 裝的對象就是 適配者(Adaptee),即被適配的類。適配器提供客戶類需要的接口, 適配器的實現(xiàn)就是把客 戶類的請求轉(zhuǎn)化為對適配者的相應接口的調(diào)用 。也就是說:當客戶
14、類調(diào)用適配器的方法時,在適配器類的內(nèi)部將調(diào)用適配者類的方法,而這個過程對客戶類是透明的,客戶類并不直接訪問適配者類。因此,適配器可以使由 于接口不兼容而不能交互的類可以一起工作 。這就是適 配器模式的模式動機。意圖:將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。Ad a p t e r 模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。適用性: 你想使用一個已經(jīng)存在的類,而它的接口不符合你的需求。 你想創(chuàng)建一個可以復用的類,該類可以與其他不相關的類或不可預見的類(即那些接口可能不一定兼容的類)協(xié)同工作。(僅適用于對象 Ada p t er )你想使用一些已經(jīng)存在的子類,但是不可能對每
15、一個都進行子類化以匹配它們的接口。對象適配器可以適配它的父類接口。組合模式(Composite Pattern) 對于樹形結構,當容器對象(如文件夾)的某一個方法 被調(diào)用時,將遍歷整個樹形結構,尋找也包含這個方法 的成員對象(可以是容器對象,也可以是葉子對象,如 子文件夾和文件)并調(diào)用執(zhí)行。(遞歸調(diào)用) 由于容器對象和葉子對象在功能上的區(qū)別,在使用這些 對象的客戶端代碼中必須 有區(qū)別地對待容器對象和葉子 對象,而實際上大多數(shù)情況下客戶端希望一致地處理它 們,因為對于這些對象的區(qū)別對待將會使得程序非常復 雜。組合模式描述了如何將容器對象和葉子對象進行遞歸組 合,使得用戶在使用時無須對它們進行區(qū)分
16、 ,可以一致 地對待容器對象和葉子對象,這就是組合模式的模式動 機。意圖:將對象組合成樹形結構以表示“部分 -整體的層次結構。C o m po s i te使得用戶對單個對象和組合對象的使用具有一致性。適用性:你想表示對象的部分-整體層次結構。你希望用戶忽略組合對象與單個對象的不同,用戶將統(tǒng)一地使用組合結構中的所有對象。Flyweight享元模式面向?qū)ο蠹夹g可以很好地解決一些靈活性或可擴展性問 題,但在很多情況下需要在系統(tǒng)中增加類和對象的個數(shù)。 當對象數(shù)量太多時,將導致運行代價過高,帶來性能下 降等問題。享元模式正是為解決這一類問題而誕生的。享元模式通過共享技術實現(xiàn)相同或相似對象的重用。在享元
17、模式中可以共享的相同內(nèi)容稱為內(nèi)部狀態(tài)(I ntrinsic State),而那些需要外部環(huán)境來設置的不能共享的內(nèi)容稱為外部狀態(tài)(Extrinsic State),由于區(qū)分了內(nèi)部狀態(tài)和外部狀態(tài),因此可以通過設置不同的外部 狀態(tài)使得相同的對象可以具有一些不同的特征,而相同的內(nèi)部狀態(tài)是可以共享的。在享元模式中通常會出現(xiàn)工廠模式,需要創(chuàng)建一個享元工廠來負責維護一個享元池(Flyweight Pool) 用于存儲 具有相同內(nèi)部狀態(tài)的享元對象。在享元模式中共享的是享元對象的內(nèi)部狀態(tài),外部狀態(tài)需要通過環(huán)境來設置。在實際使用中,能夠共享的內(nèi)部 狀態(tài)是有限的,因此 享元對象一般都設計為較小的對象, 它所包含的內(nèi)
18、部狀態(tài)較少,這種對象也稱為細粒度對象。享元模式的目的就是使用共享技術來實現(xiàn)大量細粒度對 象的復用。意圖:運用共享技術有效地支持大量細粒度的對象。適用性:* 一個應用程序使用了大量的對象。* 完全由于使用大量的對象,造成很大的存儲開銷。* 對象的大多數(shù)狀態(tài)都可變?yōu)橥獠繝顟B(tài)。* 如果刪除對象的外部狀態(tài),那么可以用相對較少的共享對象取代很多組對象。* 應用程序不依賴于對象標識。由于F I ywe i g ht對象可以被共享,對于概念上明顯有別的對象,標識測試將返回真值。代理模式在某些情況下,一個客戶不想或者不能直接引用一個對象,此時可以通過一個稱之為“代理”的第三者來實現(xiàn)間接引用。代理對象可以在客戶
19、端和目標對象之間起到中介的作用,并且可以通過代理對象去掉客戶不能看到的內(nèi)容和服務或者添加客戶需要的額外服務通過引入一個新的對象(如小圖片和遠程代理對象) 來實現(xiàn)對真實對象的操作或者將新的對象作為真實對象的一個替身,這種實現(xiàn)機制即為代理模式,通過引入代理對象來間接 訪問一個對象,這就是代理模式的模式動機。意圖:將對象組合成樹形結構以表示“部分 -整體的層次結構。C o m po s i te 使得用戶對單個對象和組合對象的使用具有一致性。適用性:你想表示對象的部分-整體層次結構。你希望用戶忽略組合對象與單個對象的不同,用戶將統(tǒng)一地使用組合結構中的所有對象。意圖:運用共享技術有效地支持大量細粒度的
20、對象。適用性: 一個應用程序使用了大量的對象。 完全由于使用大量的對象,造成很大的存儲開銷。 對象的大多數(shù)狀態(tài)都可變?yōu)橥獠繝顟B(tài)。* 如果刪除對象的外部狀態(tài),那么可以用相對較少的共享對象取代很多組對象。* 應用程序不依賴于對象標識。由于 F I ywe i g ht對象可以被共享,對于概念上明顯有別的對象,標識測試將返回真值。.Chain of Responsibility職責鏈模式模式動機職責鏈可以是一條直線、一個環(huán)或者一個樹形結構,最常見的職責鏈是直線型,即沿著一條單向的鏈來傳遞請求。鏈上的每一個對象都是請求處理者,職責鏈模式可以將 請求的處理者組織成一條鏈,并使請求沿著鏈傳遞,由 鏈上的處
21、理者對請求進行相應的處理,客戶端無須關心 請求的處理細節(jié)以及請求的傳遞,只需將請求發(fā)送到鏈 上即可,將請求的發(fā)送者和請求的處理者解耦。這就是 職責鏈模式的模式動機意圖:使多個對象都有機會處理請求,從而避免請求的發(fā)送者和接收者之間的耦合關系。將這些對象連成一條鏈,并沿著這條鏈傳遞該請求,直到有一個對象處理它為止。適用性:* 有多個的對象可以處理一個請求,哪個對象處理該請求運行時刻自動確定。* 你想在不明確指定接收者的情況下,向多個對象中的一個提交一個請求。* 可處理一個請求的對象集合應被動態(tài)指定。16.Comma nc命令模式在軟件設計中,我們經(jīng)常需要向某些對象發(fā)送請求,但 是并不知道請求的接收
22、者是誰,也不知道被請求的操作 是哪個,我們只需在程序運行時指定具體的請求接收者 即可,此時,可以使用命令模式來進行設計,使得請求 發(fā)送者與請求接收者消除彼此之間的耦合,讓對象之間 的調(diào)用關系更加靈活。命令模式可以對發(fā)送者和接收者完全解耦,發(fā)送者與接 收者之間沒有直接引用關系,發(fā)送請求的對象只需要知 道如何發(fā)送請求,而不必知道如何完成請求。這就是命 令模式的模式動機。Connand意圖:將一個請求封裝為一個對象, 從而使你可用不同的請求對客戶進行參數(shù)化;對請求排隊或記錄請求日志,以及支持可撤消的操作。適用性: 抽象出待執(zhí)行的動作以參數(shù)化某對象,你可用過程語言中的回調(diào)( c a II b a c
23、k )函數(shù)表達這種參數(shù)化機制。所謂回調(diào)函數(shù)是指函數(shù)先在某處注冊,而它將在稍后某個需要的時候被調(diào)用。Co mm a n d模式是回調(diào)機制的一個面向?qū)ο蟮奶娲贰?在不同的時刻指定、排列和執(zhí)行請求。一個C o m m a n d 對象可以有一個與初始請求無關的生存期。如果一個請求的接收者可用一種與地址空間無關的方式表達,那么就可將負責該請求的命令對 象傳送給另一個不同的進程并在那兒實現(xiàn)該請求。 支持取消操作。C o m m a n d 的E x c u t e操作可在實施操作前將狀態(tài)存儲起來,在取消操作時這個狀態(tài)用來消除該操作的影響。C o m m a n d 接口必須添加一個 U n e x e
24、 c u t e 操作,該操作取消上一次 E x e c u t e調(diào)用的效果。執(zhí)行的命令被存儲在一個歷史列表中。可通過向后和向前遍歷這一列表并分別調(diào)用 U n e x e c u t e 和E x e c u t e 來實現(xiàn)重數(shù)不限的取消”和重 做”。 支持修改日志,這樣當系統(tǒng)崩潰時,這些修改可以被重做一遍。在C o m m a n d 接口中添加裝載操作和存儲操作,可以用來保持變動的一個一致的修改日志。從崩潰中恢復的過程包括從磁盤中重 新讀入記錄下來的命令并用 E x e c u t e操作重新執(zhí)行它們。* 用構建在原語操作上的高層操作構造一個系統(tǒng)。這樣一種結構在支持事務(t r a n
25、s a c t i on)的信息系統(tǒng)中很常見。一個事務封裝了對數(shù)據(jù)的一組變動。C o m m a n d 模式提供了對事務進行建模的方法。Command 有一個公共的接口,使得你可以用同一種方式調(diào)用所有的事務。同時使 用該模式也易于添加新事務以擴展系統(tǒng)。17.Iterator解釋器模式如果在系統(tǒng)中某一特定類型的問題發(fā)生的頻率很高,此時可以考慮將這些問題的實例表 述為一個語言中的句子,因此可以構建一個解釋器,該解釋器通過解釋這些句子來解決 這些問題。解釋器模式描述了如何構成一個簡單的語言解釋器,主要應用在使用面向?qū)ο笳Z言開發(fā) 的編譯器中。relum new意圖:提供一種方法順序訪問一個聚合對象中
26、各個元素,而又不需暴露該對象的內(nèi)部表示。適用性:* 訪問一個聚合對象的內(nèi)容而無需暴露它的內(nèi)部表示。* 支持對聚合對象的多種遍歷。為遍歷不同的聚合結構提供一個統(tǒng)一的接口 (即,支持多態(tài)迭代)。 20. Observer觀察者模式*建立一種對象與對象之間的依賴關系,一個對象發(fā)生改變時將 自動通知其他對象,其他對象將相應做出反應。在此,發(fā)生改變 的對象稱為觀察目標,而被通知的對象稱為觀察者,一個觀察目 標可以對應多個觀察者,而且這些觀察者之間沒有相互聯(lián)系,可以根據(jù)需要增加和刪除觀察者,使得系統(tǒng)更易于擴展,這就是觀察者模式的模式動機。意圖:定義對象間的一種一對多的依賴關系,當一個對象的狀態(tài)發(fā)生改變時,
27、所有依賴于它的對象都得到通 知并被自動更新。適用性:當一個抽象模型有兩個方面,其中一個方面依賴于另一方面。將這二者封裝在獨立的對象中以使它們可以各自獨立地改變和復用。當對一個對象的改變需要同時改變其它對象,而不知道具體有多少對象有待改變。當一個對象必須通知其它對象,而它又不能假定其它對象是誰。換言之,你不希望這些對象是緊密耦合的。設計模式(Design Pattern)就是可復用的設計范例,它是在一定條件下對某些軟件開發(fā)問題的 可重用的系統(tǒng)化解決方案??梢苑奖愕貜陀矛F(xiàn)有的較好的面向?qū)ο蟮能浖O計和體系結構, 設計出更加模塊化的可復用的和易于理解的軟件。設計模式的六大原則開閉原則對擴展開放,對修
28、改關閉。 里氏代換原則:基類可以被子類替換。合成復用原則:盡量使用合成/聚合,盡量不要使用類繼承接口隔離原則:使用多個隔離的接口,比使用單個接口好。迪米特法則:一個軟件實體應當盡可能少地與其他實體發(fā)生相互作用。依賴倒轉(zhuǎn)原則:盡量使用合成/聚合,而不是使用繼承。設計模式的六大原則:開閉原則(OCP)一個系統(tǒng)要對擴展開放,而對修改關閉在不修改以前已經(jīng)寫好的代碼或者盡量不改的情況下來擴展系統(tǒng)的功能Software en tities should be ope n for exte nsion, but closed for modificati on設計模式的六大原則:里氏代換原則(LSP)見氏代
29、換原則刪禾颯啲宰打只有輸生類才以禪聶掉總奘軟件單位的宜能爪 仝受到綁陽尿類才録正戲復用,碩枕也才在基類的基礎上增加新的行為:個軟件實體QO用的是個基類的樂那么企適用于只了類而11它 根本小隨察覺出產(chǎn)類對彖柯子類對伽別.劃累對禪冷英舉為TI的對象oh那有類卑為T2的對 02. 以T】定文的所 有程序P在所有的對製E需代換成成時,S!序P的行為設背變化,那么類塑T2是類型 TI的子類型.設計模式的六大原則:迪米特法則(LOD)The Law of Demeter (LoD) or Prin ciple of Least Kno wledge is a desig n guideli ne for
30、develop ing software, particularly object-orie nted programs.The guideli ne was inven ted at Northeaster n Uni versity towards the end of 1987, and can be succi nctly summarized in one of the followi ng ways:Each unit should have only limited kno wledge about other un its: only un its closely relate
31、d to the curre nt un it.Each unit should only talk to its frien ds; dont talk to stra ngers.Only talk to your immediate frien ds.設計模式的六大原則:依賴倒轉(zhuǎn)原則(loC)Inversion of Control, or IoC, is an abstract principle describing an aspect of some software architecture desig ns in which the flow of con trol of a
32、system is in verted in comparis on to procedural program ming.In traditi onal program ming the flow is con trolled by a cen tral piece of code. Usi ng Inversion of Control this central control as a design principle is left behind. Although the caller will eventuallyget its answer, how and when is ou
33、t of control of the caller. It is the callee who decides how and whe n to an swer.抽探不應當依賴卜細節(jié):細節(jié)應當依賴十揄球* (Abstractions should not depend upon detaih. Details should depend upon abstractions)輿針對接口編程”不要針對真現(xiàn)編( Program (o an interface, not an impkmen( ation)設計模式的六大原則:接口隔離原則(ISP)The ISP says that once an
34、in terface has gotte n too fat it n eeds to be split into smaller and more specific in terfaces so that any clie nts of the in terface will only know about the methods that perta in to them .In a nu tshell, no clie nt should be forced to depe nd on methods it does not use 接口的設計應該遵循最小接口原則,不要把用戶不使用的方法
35、塞進同一個接口里。設計模式的六大原則:合成/聚合復用原則(CARP)盡量使用合成/聚合,盡量不要使用類繼承。合成和聚合都是關聯(lián)的特殊種類。聚合表示一種弱的擁有”關系,體現(xiàn)的是A對象可以包含B對象,但B對象不是A對象的一部分;合成則是一種強的擁有”關系,體現(xiàn)了嚴格的部分和整體的關系,部分和整體的生命周期一樣。應首先使用合成/聚合,合成/聚合則使系統(tǒng)靈活,其次才考慮繼承,達到復用的目的。設計模式的六大原則:合成/聚合復用原則(CARP)在一個新的對象里面使用一些已有的對象,使之成為新對象的一部分;新的對象通過向這些對象的委派達到復用這些對象的目的。區(qū)分“ has和“ -a的不同繼承的缺點在于:父類
36、的方法全部暴露給子類。父類如果發(fā)生變化,子類也得發(fā)生變化 設計模式的四個基本要素模式名稱問題(pattern name)”(probfem)解決方案效果(so 1ut i on)(consequences)其中:問題描述了應該在何時使用模式;解決方案描述了設計的組成成分、它們之間的相互關系及各自的職責和協(xié)作方式; 效果描述了模式應用的效果和使用模式應該權衡的問題。根據(jù)其目的可以分為創(chuàng)建型、結構型和行為型模式三種創(chuàng)建型 設計模式W結構型設計模式行為型r設計模武創(chuàng)建型模式與對象的 創(chuàng)建有關結構型模式處理類或*對象的組合行為型櫻式對類或?qū)?象怎捽交互和怎樣分 配職進行描述如 Factory meth
37、od模 式、Builder模式等-如Facade模式、Adapter模式、Bridge 模式等如Command模式、 Observer 模式、 StrBte少棋式等設計模式一一可復用面向?qū)ο筌浖幕A:23個設計模式設計模式的作用:在系統(tǒng)開發(fā)階段即引入設計模式,有助于軟件系統(tǒng)體系結構更加精巧、簡潔、靈活和易理解。設計模式能夠提高已有系統(tǒng)的文檔管理和系統(tǒng)維護的有效性。設計模式作為一種指導思想,致力于降低系統(tǒng)各對象的耦合程度,以此來實現(xiàn)擴展性和復用性。設計模式使人們可以更加簡單方便地復用成功的設計和體系結構。設計模式舉例:單例模式(創(chuàng)建型模式)、模版(Template )模式(行為型模式)、門面(Facade)模式(結 構型模式)、觀察者(OBSERVER )模式(行為型模式)、適配器(ADAPTER )模式(結構 型模式)、命令(COMMAND )模式 (行為型模式)單例模式的特點:單例類只能有一個實例。 單例類必須自己創(chuàng)建自己的唯一實例。單例類必須給所有其它對象提供這一實例。單例模式應用:每臺計算機可以有若干個打印機,但只能有一個Printer Spooler,避免兩個打印作業(yè)同時輸出到打印機。一個具有自動編號主鍵的表可以有多個
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《書法》校本課程開發(fā)與實施方案
- 教育貸款服務合同
- 內(nèi)容營銷代運營合同
- 網(wǎng)站維護合同
- 2024至2030年中國止嗽清果丸數(shù)據(jù)監(jiān)測研究報告
- 特許經(jīng)營代理協(xié)議
- 質(zhì)量關鍵績效指標(KPI)管理合同
- 2024至2030年中國小香豬行業(yè)投資前景及策略咨詢研究報告
- 家用電器代理銷售合同
- 2024至2030年中國全息電化鋁數(shù)據(jù)監(jiān)測研究報告
- 【道法】認識生命 課件-2024-2025學年統(tǒng)編版道德與法治七年級上冊
- 2023-2024學年北京市西城區(qū)三帆中學八年級(上)期中數(shù)學試卷【含解析】
- 走近湖湘紅色人物智慧樹知到答案2024年湖南工商大學
- 10kV架空線路專項施工方案
- AQ6111-2023個體防護裝備安全管理規(guī)范
- 《跟上兔子》繪本三年級第1季This-Is-My-Family教學課件
- (正式版)JBT 9229-2024 剪叉式升降工作平臺
- 教育互聯(lián)網(wǎng)在教學設計中的應用
- 江蘇開放大學 社會主義的發(fā)展及其規(guī)律 正確把握科學社會主義基本原則
- 2023版押品考試題庫必考點含答案
評論
0/150
提交評論