版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、-作者xxxx-日期xxxx軟件設(shè)計(jì)與體系結(jié)構(gòu)復(fù)習(xí)整理題目及答案【精品文檔】1、各種性能指標(biāo)的定義及如何到達(dá)各種性能指標(biāo)的方法ppt1-8 119頁(yè)-124頁(yè)性能:吞吐量Throughput、響應(yīng)時(shí)間Response Time、Deadlines 實(shí)現(xiàn)吞吐量:Peak & Average Many system have low average but high peak throughput requirements實(shí)現(xiàn)響應(yīng)時(shí)間: Guaranteed & Average E.g. 95% of responses in sub-4 seconds, and all with
2、in 10 secondsDealines:Deadlines often associated with batch jobs in IT systems2、常用的中間件有那幾種類型(四種)Business Process OrchestratorsMessage BrokersApplication ServersTransportMessage-Oriented Middleware, Distributed Objects SystemsJ2EE, CCM, .NETBizTalk, WebSphere Message Broker, SonicMQBizTalk, TIBCO Sta
3、ffWare, ActiveBPEL分類:Business Process Orchestrators 業(yè)務(wù)流程協(xié)調(diào)器 Message Brokers 消息代理 Application Servers 應(yīng)用服務(wù)器 Transport面向消息的中間件,分布式對(duì)象系統(tǒng)(1)CORBA-公用對(duì)象請(qǐng)求代理(調(diào)度)程序體系結(jié)構(gòu),它在對(duì)象間建立客戶-服務(wù)器的關(guān)系,這樣一個(gè)客戶可以很簡(jiǎn)單地使用服務(wù)器對(duì)象的方法而不論服務(wù)器是在同一機(jī)器上還是通過(guò)一個(gè)網(wǎng)絡(luò)訪問(wèn)。 (常見(jiàn)的對(duì)象請(qǐng)求代理架構(gòu))(2)Basic Message-oriented middleware- MOM指的是利用高效
4、可靠的消息傳遞機(jī)制進(jìn)行平臺(tái)無(wú)關(guān)的數(shù)據(jù)交流,并基于數(shù)據(jù)通信來(lái)進(jìn)行分布式系統(tǒng)的集成。通過(guò)提供消息傳遞和消息排隊(duì)模型,它可在分布環(huán)境下擴(kuò)展進(jìn)程間的通信,并支持多通訊協(xié)議、語(yǔ)言、應(yīng)用程序、硬件和軟件平臺(tái)。 (面向消息的中間件)(3)J2EE- J2EE核心是一組技術(shù)規(guī)范與指南,其中所包含的各類組件、服務(wù)架構(gòu)及技術(shù)層次,均有共同的標(biāo)準(zhǔn)及規(guī)格,讓各種依循J2EE架構(gòu)的不同平臺(tái)之間,存在良好的兼容性,解決過(guò)去企業(yè)后端使用的信息產(chǎn)品彼此之間無(wú)法兼容,企業(yè)內(nèi)部或外部難以互通的問(wèn)題。 (4)Message brokers-消息代理是一種在數(shù)據(jù)源與目的地之間移動(dòng)數(shù)據(jù)使信息處理
5、流暢的軟件技術(shù),數(shù)據(jù)源與目的地包括已有的應(yīng)用、文件、數(shù)據(jù)庫(kù)、對(duì)象、硬拷貝輸出及Web客戶端等。 (消息代理)(5)Business process orchestrators-“業(yè)務(wù)過(guò)程的部分或整體在計(jì)算機(jī)應(yīng)用環(huán)境下的自動(dòng)化”,它主要解決的是“使在多個(gè)參與者之間按照某種預(yù)定義的規(guī)則傳遞文檔、信息或任務(wù)的過(guò)程自動(dòng)進(jìn)行,從而實(shí)現(xiàn)某個(gè)預(yù)期的業(yè)務(wù)目標(biāo),或者促使此目標(biāo)的實(shí)現(xiàn)”。(業(yè)務(wù)過(guò)程代理)3、什么是軟件架構(gòu)(好幾種定義,但是主要點(diǎn)是結(jié)構(gòu),元素,關(guān)系,接口)PPT第4頁(yè)架構(gòu)是一個(gè)系統(tǒng)的基本組織,體現(xiàn)在它的組件,它們之間的相互關(guān)系和環(huán)境,其設(shè)計(jì)原則和進(jìn)化論程序或計(jì)算系統(tǒng)的軟
6、件架構(gòu)是系統(tǒng)的結(jié)構(gòu)或結(jié)構(gòu),由軟件元素,這些元素的外部可見(jiàn)的屬性,它們之間的關(guān)系(軟件架構(gòu))超過(guò)計(jì)算的算法和數(shù)據(jù)結(jié)構(gòu);設(shè)計(jì)和指定的總體系統(tǒng)結(jié)構(gòu)作為一種新的問(wèn)題出現(xiàn)。結(jié)構(gòu)性問(wèn)題包括組織和全球生產(chǎn)總值(gdp)控制結(jié)構(gòu);協(xié)議進(jìn)行通信,同步和數(shù)據(jù)訪問(wèn);分配的功能設(shè)計(jì)元素;物流;設(shè)計(jì)元素構(gòu)成;擴(kuò)展和性能,設(shè)計(jì)方案中選擇它是關(guān)于軟件設(shè)計(jì):所有的架構(gòu)是軟件設(shè)計(jì),但不是所有的設(shè)計(jì)都是軟件架構(gòu)。設(shè)計(jì)過(guò)程的一個(gè)部分;簡(jiǎn)單地說(shuō),架構(gòu)關(guān)注“一旦系統(tǒng)建立后就很難或是不可能改變的問(wèn)題”:質(zhì)量屬性,例如安全性,性能;非功能性需求,像開(kāi)銷,硬件配置。 【百度答案】 軟件架構(gòu)(software architecture)是一系
7、列相關(guān)的抽象模式,用于指導(dǎo)大型軟件系統(tǒng)各個(gè)方面的設(shè)計(jì)。 軟件架構(gòu)是一個(gè)系統(tǒng)的草圖。軟件架構(gòu)描述的對(duì)象是直接構(gòu)成系統(tǒng)的抽象組件。各個(gè)組件之間的連接則明確和相對(duì)細(xì)致地描述組件之間的通訊。在實(shí)現(xiàn)階段,這些抽象組件被細(xì)化為實(shí)際的組件,比如具體某個(gè)類或者對(duì)象。在面向?qū)ο箢I(lǐng)域中,組件之間的連接通常用接口_(計(jì)算機(jī)科學(xué))來(lái)實(shí)現(xiàn)系統(tǒng)的軟件體系結(jié)構(gòu)是建立一個(gè)對(duì)系統(tǒng)來(lái)說(shuō)所需要的結(jié)構(gòu),包括軟件元素,它們之間的關(guān)系,以及兩者的性質(zhì)。4、什么是架構(gòu)風(fēng)格 PPT1-8 36頁(yè)n An Architectural Style defines a family of systems in terms of a pattern
8、 of structural organization. It determines:q the vocabulary of components and connectors that can be used in instances of that style, q a set of constraints on how they can be combined. For example, one might constrain:n the topology of the descriptions (e.g., no cycles).n execution semantics (e.g.,
9、 processes execute in parallel).描述軟件的基本結(jié)構(gòu)組織或綱要,提供事先定義好的子系統(tǒng),制定好責(zé)任并將它們組織在一起的法則和指南。| 答案2: 也叫架構(gòu)模式,一個(gè)架構(gòu)風(fēng)格描述軟件系統(tǒng)里的基本的結(jié)構(gòu)組織或綱要。架構(gòu)風(fēng)格提供一些事先定義好的子系統(tǒng),指定他們的責(zé)任并給出把他們組織在一起的法則和指南。一個(gè)架構(gòu)模式常常可以分解成很多個(gè)設(shè)計(jì)模式的聯(lián)合使用。MVC模式就屬于架構(gòu)模式。軟件系統(tǒng)有哪幾類結(jié)構(gòu)?模塊、組件和連接器、配置。模塊分配具體的職責(zé),是工作的基礎(chǔ);我們調(diào)用運(yùn)行時(shí)結(jié)構(gòu)組件和連接器結(jié)構(gòu),在我們的使用中,組件始終是運(yùn)行時(shí)實(shí)體;分配結(jié)構(gòu)描述從軟件結(jié)構(gòu)映射到系統(tǒng)的環(huán)境,組
10、織、發(fā)展、安裝、執(zhí)行;元素是一類模塊(類、層或功能的劃分等),模塊與其他模塊相關(guān)聯(lián)通過(guò)概括化或?qū)I(yè)化的關(guān)系;元素運(yùn)行組件如服務(wù)、同行、客戶、服務(wù)器、過(guò)濾器等,連接器是組件間的通信工具;5、有那些常見(jiàn)架構(gòu)風(fēng)格(1)管道和過(guò)濾器架構(gòu)風(fēng)格 PPT 40頁(yè) 適用于需要定義一系列的執(zhí)行規(guī)則數(shù)據(jù)的獨(dú)立運(yùn)算。 組件在輸入時(shí)讀數(shù)據(jù)流,在輸出時(shí)產(chǎn)生數(shù)據(jù)流。 優(yōu)點(diǎn):易于理解、支持重用、容易保持或增強(qiáng)、允許某些專業(yè)分析、支持并發(fā)執(zhí)行缺點(diǎn):轉(zhuǎn)換特性導(dǎo)致其不擅長(zhǎng)處理交互系統(tǒng)、書寫自己的過(guò)濾器時(shí),過(guò)度地解析或不
11、解析導(dǎo)致性能損失和更加復(fù)雜舉例:unix的shell腳本、傳統(tǒng)編譯器組件:稱為過(guò)濾器,應(yīng)用于對(duì)局部的輸入流的轉(zhuǎn)換,經(jīng)常增長(zhǎng)的計(jì)算,因此,在輸入結(jié)束前輸出就開(kāi)始了。 . 連接器:稱為管道,給流提供管道,把一個(gè)過(guò)濾器的輸出傳輸?shù)搅硪粋€(gè)輸入。 (2)面向?qū)ο箫L(fēng)格 PPT49頁(yè)適用于主要問(wèn)題是識(shí)別和保護(hù)信息的相關(guān)主體。 數(shù)據(jù)代理和它們相關(guān)的操作封裝在一個(gè)抽象數(shù)據(jù)類型里面。 優(yōu)點(diǎn):可以改變實(shí)施而不影響客戶,可以設(shè)計(jì)作為獨(dú)立的交互代理的集合的系統(tǒng)缺點(diǎn):一個(gè)對(duì)象與另一個(gè)對(duì)象進(jìn)行交互時(shí)第一個(gè)對(duì)象必須知道第二個(gè)對(duì)象的身份。對(duì)象
12、引起的副作用。舉例:java,c#開(kāi)發(fā)的系統(tǒng) 組件:對(duì)象 連接器:功能和過(guò)程調(diào)用(方法)(3)隱式調(diào)用風(fēng)格 應(yīng)用于涉及到組件的松耦合集,其中的每一個(gè)都執(zhí)行一些操作,還可能允許其他的操作。 尤其對(duì)必須很快重新配置的應(yīng)用很有用
13、0;改變服務(wù)的供應(yīng)商 可能的或是不可能的能力 不是直接的引用過(guò)程 一個(gè)組件能發(fā)表一個(gè)或多個(gè)事件 在系統(tǒng)中的其他組件能夠在事件中注冊(cè)一個(gè)興趣通過(guò)與事件和
14、過(guò)程結(jié)合 當(dāng)一個(gè)事件被聲明后,廣播系統(tǒng)(連接器)自己引用已經(jīng)注冊(cè)的事件的所有過(guò)程 所有聲明的事件“隱式”造成了過(guò)程在其他模塊的調(diào)用 優(yōu)點(diǎn):為重用提供強(qiáng)大支持、簡(jiǎn)化系統(tǒng)演化缺點(diǎn):當(dāng)一個(gè)系統(tǒng)廣播一個(gè)事件時(shí),不知道其他哪些組件會(huì)響應(yīng),不知道依賴于響應(yīng)被調(diào)用的順序,不知道響應(yīng)什么時(shí)候結(jié)束舉例:數(shù)據(jù)庫(kù)管理系統(tǒng)中執(zhí)行完整性約束(觸發(fā)器)
15、160; (4)客戶-服務(wù)器風(fēng)格 PPT64頁(yè) 適用于涉及到分布式的數(shù)據(jù)和跨越一系列的組件的處理 優(yōu)點(diǎn):數(shù)據(jù)分布簡(jiǎn)單明確、位置透明、混合和匹配異構(gòu)平臺(tái)、易于添加新服務(wù)器或升級(jí)現(xiàn)有服務(wù)器。缺點(diǎn):沒(méi)有名稱和服務(wù)的中央寄存器很難找到什么服務(wù)是沒(méi)用的舉例:文件服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器、對(duì)象服務(wù)器 組件: 服務(wù)器:標(biāo)準(zhǔn)獨(dú)立的組件提供特別的服務(wù),如打印,數(shù)據(jù)管理等。
16、0; 客戶端:組件調(diào)用服務(wù)器提供的服務(wù)。 連接器:網(wǎng)絡(luò),允許客戶端訪問(wèn)遠(yuǎn)程服務(wù)器。 (5)分層風(fēng)格 PPT72頁(yè)適用于涉及到分布式的能夠分層的組織的類的服務(wù),每層給它的上一層提供服務(wù),同時(shí)作為下一層的客戶端,只有仔細(xì)地從內(nèi)層選擇選擇過(guò)程,才能用于他們臨近的外層。優(yōu)點(diǎn):設(shè)計(jì)(基于提高抽象層次)、改善(一個(gè)層的功能改變最多影響兩個(gè)層)、重用(相同層的不同實(shí)現(xiàn)可以交替使用)缺點(diǎn):并不是所有的系統(tǒng)都可以很容易的實(shí)現(xiàn)分層,性能需求可能迫使底層實(shí)現(xiàn)高級(jí)功能的耦合。舉例:分層通信協(xié)議、操作系統(tǒng) 組件:典型的過(guò)程的集合。&
17、#160;連接器:典型的在有限的可見(jiàn)性下的過(guò)程調(diào)用 (6) 倉(cāng)庫(kù)風(fēng)格 PPT80頁(yè)適用于主要問(wèn)題是建立、增加和維護(hù)復(fù)雜信息的主體部分,信息一定要能夠用很多種方式操作。經(jīng)常需要長(zhǎng)期的存在。 優(yōu)點(diǎn):有效存儲(chǔ)大量數(shù)據(jù)、共享式模式模型、集中式管理缺點(diǎn):必須先達(dá)成一個(gè)數(shù)據(jù)模型、很難分配數(shù)據(jù)、數(shù)據(jù)升級(jí)很昂貴舉例:信息系統(tǒng)、編程環(huán)境、圖形編輯器、人工智能知識(shí)基礎(chǔ)、逆向工程系統(tǒng)組件: 主要的數(shù)據(jù)結(jié)構(gòu)能夠表示出系統(tǒng)的正確狀態(tài) 操作主要數(shù)據(jù)結(jié)構(gòu)的獨(dú)立組件的集合 連接器:典型地過(guò)程調(diào)用或是直接內(nèi)存訪問(wèn)
18、; (7)解釋程序風(fēng)格 PPT87頁(yè)適用于執(zhí)行解決方案的最合適的語(yǔ)言或是機(jī)器不是直接可用的。 優(yōu)點(diǎn):模擬無(wú)實(shí)現(xiàn)的硬件、促進(jìn)跨多種平臺(tái)的應(yīng)用程序或語(yǔ)言可移植性缺點(diǎn): 舉例:編程語(yǔ)言編譯器、基于規(guī)則的系統(tǒng)、腳本語(yǔ)言組件:包括一個(gè)狀態(tài)機(jī),有一個(gè)執(zhí)行引擎和三個(gè)記憶狀態(tài): 當(dāng)前的執(zhí)行引擎的狀態(tài) 程序被翻譯 當(dāng)前的被翻譯的程序的狀態(tài) 連接器:
19、60; 過(guò)程調(diào)用 直接內(nèi)存訪問(wèn) (8)過(guò)程控制風(fēng)格 PPT94頁(yè)適用于目的是維護(hù)特殊過(guò)程的輸出屬性在給定參考值的情形下 優(yōu)點(diǎn):缺點(diǎn):舉例:實(shí)時(shí)系統(tǒng)軟件用來(lái)控制(核電站、汽車巡航控制)組件: 過(guò)程定義 包括操作一些過(guò)程變量的機(jī)制 控制算法 決定如何去操作過(guò)程變量 連接器:數(shù)據(jù)流關(guān)系 過(guò)程變量:
20、60; 被控制的變量的值是系統(tǒng)能控制的 輸入變量能夠檢測(cè)過(guò)程的輸入 操縱變量的值能夠被控制器改變 設(shè)置斷點(diǎn) 是一個(gè)控制變量所需要的值
21、0;傳感器 獲得過(guò)程變量與控制有關(guān)的值6、架構(gòu)師需要的核心技能是什么(1) 涉眾之間的交流 (2) 技術(shù)知識(shí)(3) 軟件工程學(xué) (4) 風(fēng)險(xiǎn)管理7、什么是架構(gòu)視圖 PPT 15頁(yè)一個(gè)架構(gòu)視圖是對(duì)于從某一視角或某一點(diǎn)上看到的系統(tǒng)所做的簡(jiǎn)化描述,描述中涵蓋了系統(tǒng)的某一特定方面,而省略了此方面無(wú)關(guān)的實(shí)體。8、軟件架構(gòu)過(guò)程(三個(gè)迭代步驟)PPT1-8 202頁(yè)1、確定架構(gòu)需求:架構(gòu)上重要的需求(結(jié)構(gòu)用例)-基本的質(zhì)量和系統(tǒng)的非功能性需求2、架構(gòu)設(shè)計(jì):迭代的設(shè)計(jì)步驟-風(fēng)險(xiǎn)識(shí)別是一個(gè)重要的輸出設(shè)計(jì)3、結(jié)構(gòu)驗(yàn)證:驗(yàn)證階段-驗(yàn)證階段的目的
22、是增加信心的設(shè)計(jì)團(tuán)隊(duì)的架構(gòu)是適合的目的;驗(yàn)證必須實(shí)現(xiàn)在項(xiàng)目時(shí)間和預(yù)算的約束,關(guān)鍵是要盡可能嚴(yán)格的和有效的;驗(yàn)證一個(gè)架構(gòu)設(shè)計(jì)提出了嚴(yán)峻的挑戰(zhàn),因?yàn)檫@是一個(gè)設(shè)計(jì)不能執(zhí)行或測(cè)試,包括新和COTS組件集成;兩種主要的方法:手工測(cè)試使用的測(cè)試場(chǎng)景的體系結(jié)構(gòu),建設(shè)一個(gè)原型創(chuàng)建所需的應(yīng)用程序的一個(gè)簡(jiǎn)單的原型;目的是識(shí)別潛在缺陷在設(shè)計(jì)實(shí)現(xiàn)生效前,這樣他們就可以得到改善,在建造之前修復(fù)成本更便宜9、軟件質(zhì)量屬性主要包括哪些(五種)ppt1-8 116頁(yè)Reliability 可靠性、Availability 可用性、Portability 可移植性、Scalability 可伸縮性、Performance (!
23、) 性能10、軟件可用性取決于(三種時(shí)間)PPT146頁(yè)q Time to detect failure 故障檢測(cè)時(shí)間q Time to correct failure 糾正失敗時(shí)間q Time to restart application 重新啟動(dòng)應(yīng)用程序時(shí)間11、伸縮性涉及那些方面(四種)ppt1-8 116頁(yè)q Request load 請(qǐng)求負(fù)載q Connections 連接q Data size 數(shù)據(jù)大小q Deployments 部署12、吞吐率指標(biāo) PPT120頁(yè)q Transactions per second 每秒事務(wù)數(shù)q Messages per minute 每分鐘的消息
24、q Messages per second (msp)q Maximum sustainable throughput (MST) 最大可持續(xù)吞吐量13、架構(gòu)元素的通信包括哪些 PPT 10頁(yè)數(shù)據(jù)傳遞機(jī)制,例如:函數(shù)調(diào)用、遠(yuǎn)程方法調(diào)用、異步消息控制流:組件之間的消息流來(lái)實(shí)現(xiàn)需要的功能、順序、并發(fā)/并行、同步14、各種架構(gòu)風(fēng)格的組件和連接器是什么見(jiàn)515、軟件性能指標(biāo)主要有哪幾種(三種)吞吐量、響應(yīng)時(shí)間、Deadlines生死線16、響應(yīng)時(shí)間的度量(兩種) PPT 122頁(yè)n Usually measured in (milli)seconds Guaranteed可保證的、Average17、
25、安全性質(zhì)量指標(biāo)主要有哪幾種(五種)PPT142頁(yè)n Authentication: Applications can verify the identity of their users and other applications with which they communicate. 身份驗(yàn)證:應(yīng)用程序可以驗(yàn)證他們的用戶的身份和他們通信的其他應(yīng)用程序。n Authorization: Authenticated users and applications have defined access rights to the resources of the system. 授權(quán):身份驗(yàn)證
26、的用戶和應(yīng)用程序定義了系統(tǒng)資源的訪問(wèn)權(quán)限。n Encryption: The messages sent to/from the application are encrypted. 加密:從應(yīng)用程序發(fā)送到/從應(yīng)用程序的消息是加密的。n Integrity: This ensures the contents of a message are not altered in transit.完整性:確保在傳輸過(guò)程中不會(huì)改變消息的內(nèi)容。n Non-repudiation: The sender of a message has proof of delivery and the receiver
27、is assured of the senders identity. This means neither can subsequently refute their participation in the message exchange. 不可否認(rèn)性:一個(gè)消息的發(fā)送者有傳遞的證明,接收者保證了發(fā)送者的身份。這意味著既不能反駁他們的信息交換的參與。18、實(shí)現(xiàn)高可用性的策略(三種)PPT146頁(yè)Strategies for high availability:Eliminate single points of failure 消除單點(diǎn)故障Replication and failover
28、復(fù)制和故障轉(zhuǎn)移Automatic detection and restart 自動(dòng)檢測(cè)和重新啟動(dòng)19、信息隱藏原理PPTlecture9 88頁(yè)信息隱藏指在設(shè)計(jì)和確定模塊時(shí),使得一個(gè)模塊內(nèi)包含的特定信息(過(guò)程或數(shù)據(jù)),對(duì)于不需要這些信息的其他模塊來(lái)說(shuō),是不可訪問(wèn)的。信息隱藏(封裝)主要是為了提高軟件的可重用性和可維護(hù)性。信息隱藏造成了系統(tǒng)各個(gè)部分耦合性低。系統(tǒng)是由各個(gè)部分構(gòu)成的,如果這些部分耦合性低的話,那么這個(gè)系統(tǒng)開(kāi)發(fā)、維護(hù)等就較容易 Often one hides, e.g. Data representation. Choice of algorithm. Interface detai
29、ls / access mechanism of external entity (e.g. database, hardware) Goal: particular design choice “invisible” to clients.Why would we want to do this? Information Hiding may or may not be supported at the programming language level.20、GRASP模式的具體內(nèi)容(9個(gè)),各種模式的定義,解決的什么問(wèn)題創(chuàng)造者 Creator分配給類B職責(zé)來(lái)創(chuàng)造類A的一個(gè)實(shí)例
30、如果: (1) B聚合A的對(duì)象 (2) B包含A的對(duì)象 (3) B記錄A的對(duì)象的實(shí)例 (4) B緊密地使用A的對(duì)象 (5) B被創(chuàng)建時(shí)有初始化的數(shù)據(jù)傳遞給 解決方案:將創(chuàng)建一個(gè)類A的實(shí)例的職責(zé)指派給類B的實(shí)例,如果下列條件滿足的話:a) B聚合了A對(duì)象b) B包含了A對(duì)象c) B紀(jì)錄了A對(duì)象的實(shí)例d) B要經(jīng)常使用A對(duì)象e) 當(dāng)A的實(shí)例被創(chuàng)建時(shí),B具有要傳遞給A的初始化數(shù)據(jù)(也就是說(shuō)B是創(chuàng)建A的實(shí)例這項(xiàng)任務(wù)的信息專家)f) B
31、是A對(duì)象的創(chuàng)建者如果以上條件中不止一條成立的話,那么最好讓B聚集或包含A通俗點(diǎn)就是:我要用你所以我來(lái)創(chuàng)建你,請(qǐng)不要讓別人創(chuàng)建你這個(gè)模式是支持低耦合度原則的一個(gè)體現(xiàn) 專家 Creator 在設(shè)計(jì)對(duì)象(類)時(shí),如果某個(gè)類能夠在某方面具有完整信息,足以實(shí)現(xiàn)某責(zé)任,就將這個(gè)責(zé)任分配給這個(gè)類, 解決方案:將職責(zé)分配給具有履行職責(zé)所需要的信息的類通俗點(diǎn)就是:該干嘛干嘛去,別管別人的閑事或者我的職責(zé)就是搞這個(gè),別的事不管。舉個(gè)簡(jiǎn)單的例子,如果有一個(gè)類是專門處理字符串相關(guān)的類
32、,那么這個(gè)類只能有字符串處理相關(guān)的方法,而不要將日期處理的方法加進(jìn)來(lái)。也就是提高軟件高內(nèi)聚一種原則??刂破?#160;Controller 控制器是在用戶接口層上的第一個(gè)對(duì)象,負(fù)責(zé)接收和處理系統(tǒng)的操作信息。 解決方案:將處理系統(tǒng)事件消息的職責(zé)分派給代表下列事物的類:a) 代表整個(gè)“系統(tǒng)”的類(虛包控制者)b) 代表整個(gè)企業(yè)或組織的類(虛包控制者)c) 代表真實(shí)世界中參與職責(zé)(角色控制者)的主動(dòng)對(duì)象類(例,一個(gè)人的角色)d) 代表一個(gè)用況中所有事件的人工處理者類,通常用“<
33、;用例名>處理者”的方式命名(用例控制者)這是一個(gè)控制者角色職責(zé)分配的原則,就是哪些控制應(yīng)該分派給哪個(gè)角色。低耦合 Low Coupling 測(cè)量存在于模塊之間的依賴程度 解決方案:在分配一個(gè)職責(zé)時(shí)要使保持低耦合度。耦合度(coupling)是一個(gè)類與其它類關(guān)聯(lián)、知道其他類的信息或者依賴其他類的強(qiáng)弱程度的度量。一個(gè)具有低(弱)耦合度的類不依賴于太多的其他類。高內(nèi)聚 High Cohesion
34、160;測(cè)量一個(gè)共享的模塊內(nèi)元素的相關(guān)性 ;一個(gè)單獨(dú)模塊執(zhí)行任務(wù)的程度是功能相關(guān)的 解決方案:分配一個(gè)職責(zé)的時(shí)候要保持類的高聚合度聚合度或內(nèi)聚度(cohesion)是一個(gè)類中的各個(gè)職責(zé)之間相關(guān)程度和集中程度的度量。一個(gè)具有高度相關(guān)職責(zé)的類并且這個(gè)類所能完成的工作量不是特別巨大,那么他就是具有高聚合度。多態(tài) Polymorphism 當(dāng)相關(guān)的供選方案或行為隨著類型的變化而變化時(shí),給行為分配職責(zé)使用多態(tài)操作來(lái)適合行為變化的類型。 也就是說(shuō)盡量對(duì)抽象層編程,用多態(tài)的方法來(lái)判斷具體
35、應(yīng)該使用那個(gè)類,而不是用if instanceof 來(lái)判斷該類是什么接來(lái)執(zhí)行什么。純虛構(gòu) Pure Fabrication分配一系列高度聚合的職責(zé)給虛假的類或是不表現(xiàn)某事完成的領(lǐng)域問(wèn)題概念的有用的類,它支持高內(nèi)聚、低耦合、可重用。 一個(gè)純虛構(gòu)意味著虛構(gòu)某些事物,而不是到了迫不得已我們才這樣做。例,我們的Sale類的數(shù)據(jù)要存入數(shù)據(jù)庫(kù),但是他必須和數(shù)據(jù)庫(kù)接口相連接,如果將接口連接放入Sale類中勢(shì)必增加該類的耦合度,所以我們可以虛構(gòu)一個(gè)類來(lái)處理與數(shù)據(jù)庫(kù)接口連接的問(wèn)題。這個(gè)類就是我們虛構(gòu)出來(lái)的一個(gè)事物。間接 Indirection
36、60; 問(wèn)題:如何分配職責(zé)避免直接耦合?如何減弱對(duì)象的耦合? 解決方案:分配職責(zé)給中間的調(diào)解對(duì)象來(lái)調(diào)解兩個(gè)組件之間的關(guān)系。 將職責(zé)分配給一個(gè)中間對(duì)象以便在其他構(gòu)件或服務(wù)之間仲裁,這樣這些構(gòu)件或服務(wù)沒(méi)有被直接耦合。這個(gè)中間對(duì)象(intermediary)在其他構(gòu)件或服務(wù)間創(chuàng)建一個(gè)中介者(Indirection)。這個(gè)中間對(duì)象也就事7)中的純虛構(gòu)。防止編譯Protected Variations問(wèn)題:如何設(shè)計(jì)對(duì)象,子系統(tǒng)和系統(tǒng),使其內(nèi)部的變化和不穩(wěn)定不會(huì)對(duì)其他元素產(chǎn)生不良影響? 解決方案:識(shí)別設(shè)計(jì)變化或不穩(wěn)定之處,分配職責(zé)
37、用以在這些變化之外創(chuàng)建穩(wěn)定接口分配職責(zé)給一個(gè)客戶端的直接對(duì)象以使它與一個(gè)間接對(duì)象進(jìn)行協(xié)作,這樣客戶端無(wú)需知道這個(gè)間接對(duì)象。這個(gè)模式-也被叫做(Demeter)準(zhǔn)則。通俗點(diǎn)就是:只與你直接的朋友們通信不要跟“陌生人”說(shuō)話每個(gè)軟件單位對(duì)其他的單位都只有最少的知識(shí),而且局限于那些與本單位密切相關(guān)的軟件單位GRASP用職責(zé)設(shè)計(jì)對(duì)象:"Designing Objects with Responsibilities".它包含了9個(gè)基本模式: 1.信息專家(Information
38、;expert) 2.創(chuàng)建者(Creator) 3.高內(nèi)聚(High Cohesion) 4.低耦合(Low Coupling) 5.控制器(Controller) 6.多態(tài)性(Polymorphism) &
39、#160; 7.純虛構(gòu)(Pure Fabrication) 8.間接性(Indirection) 9.變化預(yù)防(Protected Variations) GRASP的主要特征: - 對(duì)象職責(zé)分配的基本原則。 - 主要應(yīng)用在分析和建模上。 GRASP的核心思想的理解: 自己干自己的事(職責(zé)的分配) 自己干自己的能
40、干的事(職責(zé)的分配) 自己只干自己的事(職責(zé)的內(nèi)聚)21、OO設(shè)計(jì)的五個(gè)基本原則及課件中講述的其它軟件原理 r-32-71單一職責(zé)原則 這個(gè)原則和關(guān)注點(diǎn)分離緊密聯(lián)系。它陳述了每個(gè)對(duì)象應(yīng)該只有一個(gè)理由去改變,單一聚焦在職責(zé)上。通過(guò)依附這個(gè)原則,你避免了龐大的類的設(shè)計(jì)問(wèn)題,那就像瑞士的軍刀。有了精確的對(duì)象,你再次增加了系統(tǒng)的可讀性和可維護(hù)性。 開(kāi)閉原則 這個(gè)原則陳述了類應(yīng)該對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉,那樣你就能夠添加新的特征,擴(kuò)展一個(gè)類而不用改變它內(nèi)部的行為。這個(gè)原則旨在避免破壞存在的類及依賴它的其他類,這使得你的整個(gè)應(yīng)用程序中產(chǎn)生故障和錯(cuò)誤的漣漪。
41、 Liskov替換原則 Liskov替換原則要求你應(yīng)該能夠使用任何衍生出的類代替父類,不用修改就有同樣的行為。這個(gè)原則與開(kāi)閉原則一致,它保證了一個(gè)衍生出的類不影響父類的行為,或者說(shuō),衍生出的類必須能夠被它們的基類替代。 接口分離原則 這個(gè)原則是j將一個(gè)抽象方法分裂成幾組職責(zé),給這些組分配接口來(lái)防止客戶端實(shí)現(xiàn)一個(gè)很大的接口,這個(gè)接口容納了很多它們不使用的方法。目的是為了讓類使用相同的接口只需要實(shí)現(xiàn)一些具體的方法,而不是有很多方法的龐大的接口。 依賴反轉(zhuǎn)原則 把你的類從具體的實(shí)現(xiàn)中隔離開(kāi),使它們依賴于抽象類或接口。它促進(jìn)了對(duì)接口而不是實(shí)現(xiàn)的譯碼,這
42、通過(guò)保證對(duì)實(shí)現(xiàn)的低耦合來(lái)增加系統(tǒng)的靈活性。PPT耿祥義-7: 1.面向抽象原則 設(shè)計(jì)一個(gè)類時(shí),不讓該類面向具體的類,而是面向抽象類或接口2.開(kāi)-閉原則 設(shè)計(jì)應(yīng)當(dāng)對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉。 如果您的設(shè)計(jì)遵守了“開(kāi)-閉原則”,那么這個(gè)設(shè)計(jì)一定是易維護(hù)的,因?yàn)樵谠O(shè)計(jì)中增加新的模塊時(shí),不必去修改設(shè)計(jì)中的核心模塊。 如果類中的方法是一組相關(guān)的行為,則稱該類是高內(nèi)聚的,反之稱為低內(nèi)聚的。 所謂低耦合就是盡量不要讓一個(gè)類含有太多的其它類的實(shí)例的引用,以避免修改系統(tǒng)的其中一部分會(huì)影響到其它部分?!酒渌驹怼縫pt review-32 Keep It Simple Stupid (KISS) 盡量
43、保持代碼簡(jiǎn)單而不要過(guò)分簡(jiǎn)單,這樣可以避免不必要的復(fù)雜性Dont Repeat Yourself (DRY)通過(guò)抽象使系統(tǒng)中不要出現(xiàn)重復(fù)的部分Tell, Dont ask 告訴你的對(duì)象要執(zhí)行的操作,而不要詢問(wèn)(判斷)它的狀態(tài),然后據(jù)此做決策 You aint Gonna need it (YAGNI) 偏好必要的功能需求,推遲可能需要的其它特色、Separation of Concerns (SoC)關(guān)注點(diǎn)分離Minimize The Accessibility of Classes and Members 尋求類和其成員的訪問(wèn)性最小Use Accessors and Mutators, Not
44、 Public Members 使用訪問(wèn)器和賦值函數(shù),不要使用公共成員Favor Composition Over Inheritance偏好組合而不是繼承Coad's Rules(Use inheritance only when all of the following criteria are satisfied) Program To An Interface, Not An Implementation面向接口而不是實(shí)現(xiàn)編程 22、組合,繼承,針對(duì)接口編程,黑盒,白盒重用繼承:新功能的重用方法獲得通過(guò)擴(kuò)展現(xiàn)有對(duì)象的實(shí)現(xiàn)泛化類(超類)明確了共同的屬性和方法專業(yè)類(子類)擴(kuò)展了實(shí)
45、現(xiàn)額外的屬性和方法針對(duì)接口編程又稱為面向接口編程,針對(duì)接口編程就是要先設(shè)計(jì)以系列的借口,把設(shè)計(jì)和實(shí)現(xiàn)分開(kāi),使用時(shí)之需要引用接口即可,也由于系統(tǒng)各部分的解耦合。針對(duì)接口編程是為了提高程序的課維護(hù)性、可伸縮性和可復(fù)用性。如果你在一個(gè)類中直接使用另外的一個(gè),這樣就把兩個(gè)類緊密聯(lián)系在一起了,以后如果想做出改變就很難了。如果針對(duì)接口編程,當(dāng)業(yè)務(wù)變化時(shí)我們只需要用一個(gè)新的類實(shí)現(xiàn)接口即可23、MVC模式 PPT9 16頁(yè)UI layer has views,Domain layer has modelseparating the visual, interaction and data components
46、Modelmaintains the state and data of the application - the XML documentViewA rendering of the XML documentControllerThe user interface presented to the user to manipulate the applicationMakes it very easy to have multiple different displays of the same information MVC是模型-視圖-控制器的縮寫 它代表了一種軟件設(shè)計(jì)模式,1978年
47、開(kāi)發(fā)在施樂(lè)帕克研究中心(!) 它解釋了一種分離視覺(jué)、交互和數(shù)據(jù)組件的方法。 非常受歡迎,廣泛用于Java和其他語(yǔ)言模型 :維護(hù)應(yīng)用程序的狀態(tài)和數(shù)據(jù)的XML文檔視圖 :XML文檔的呈現(xiàn)控制器 :用戶界面呈現(xiàn)給用戶操作的應(yīng)用程序?yàn)槭裁词褂肕vc模型 “模型”包含的數(shù)據(jù) 有一些方法來(lái)訪問(wèn)并可能更新它的內(nèi)容。 通常,它實(shí)現(xiàn)了一個(gè)允許模型交互的接口。 實(shí)現(xiàn)了一個(gè)允許退出和取代的接口,并不伴隨編程改變Mvc控制器 用戶與控制器進(jìn)行交互。 它解釋鼠標(biāo)移動(dòng),點(diǎn)擊按鍵等 活動(dòng)與模型溝通,如:刪除行,插入行等 它的模型的交互間接導(dǎo)致視圖的更新Mvc視圖 視圖提供模型的可視化表示。 在任何時(shí)候都可以有多個(gè)視圖表示模
48、型。 例如,一個(gè)公司財(cái)務(wù)狀況隨著時(shí)間的推移可以用一個(gè)表和圖表示。 只有兩種不同的視圖表示相同的數(shù)據(jù)。 當(dāng)模型更新時(shí),所有視圖被通知然后有機(jī)會(huì)更新。當(dāng)模型更新時(shí),所有視圖被通知然后有機(jī)會(huì)更新Model(模型)表示應(yīng)用程序核心(比如數(shù)據(jù)庫(kù)記錄列表)。View(視圖)顯示數(shù)據(jù)(數(shù)據(jù)庫(kù)記錄)。Controller(控制器)處理輸入(寫入數(shù)據(jù)庫(kù)記錄)。組成元素:模型、視圖、控制器;交互關(guān)系:用戶通過(guò)視圖發(fā)出一個(gè)請(qǐng)求,該請(qǐng)求被轉(zhuǎn)發(fā)給控制器??刂破鹘邮蘸鬀Q定使用什么模型,然后將請(qǐng)求轉(zhuǎn)發(fā)給相應(yīng)的模型。模型處理完后將相應(yīng)的數(shù)據(jù)返回給控制器??刂破鹘邮胀陻?shù)據(jù)后選擇顯示這些數(shù)據(jù)的相應(yīng)的視圖,并將視圖返回給用戶24、
49、企業(yè)應(yīng)用架構(gòu)在各層有那些主要的模式,各層,各層的各種模式的定義和結(jié)構(gòu)內(nèi)容(展現(xiàn)層,領(lǐng)域?qū)?,?shù)據(jù)源層)三層架構(gòu)的系統(tǒng):表現(xiàn)層實(shí)現(xiàn)用戶界面,在領(lǐng)域?qū)訉?shí)現(xiàn)領(lǐng)域邏輯,在數(shù)據(jù)源層存取數(shù)據(jù) 1.表現(xiàn)層(Presentation): 提供服務(wù)、顯示信息(如在WINDOWS或HTML頁(yè)面中,處理用戶請(qǐng)求,HTTP請(qǐng)求,命令行調(diào)用,批處理API) 表現(xiàn)邏輯處理用戶與軟件間的交互。主要職責(zé)是: 向用戶顯示信息 把從用戶那里獲得的信息解釋成領(lǐng)域?qū)踊驍?shù)據(jù)源層上的各種動(dòng)作。2.領(lǐng)
50、域?qū)?Domain): 領(lǐng)域邏輯,系統(tǒng)中真正的核心。也稱為業(yè)務(wù)邏輯,它就是應(yīng)用程序必須做的所有領(lǐng)域相關(guān)工作:包括根據(jù)輸入數(shù)據(jù)或者已有數(shù)據(jù)進(jìn)行計(jì)算,對(duì)從表現(xiàn)層輸入的數(shù)據(jù)進(jìn)行驗(yàn)證,以及根據(jù)從表現(xiàn)層接收的命令來(lái)確定應(yīng)該調(diào)試哪些數(shù)據(jù)源邏輯。 領(lǐng)域邏輯(業(yè)務(wù)邏輯),它就是應(yīng)用必須做的所有領(lǐng)域相關(guān)的工作: 根據(jù)輸入數(shù)據(jù)或已有數(shù)據(jù)進(jìn)行計(jì)算 對(duì)從表現(xiàn)層輸入的數(shù)據(jù)進(jìn)行驗(yàn)證
51、60; 根據(jù)從表現(xiàn)層接收的命令來(lái)確定應(yīng)該調(diào)度哪些數(shù)據(jù)源邏輯。 3.數(shù)據(jù)源層(Data Source): 與數(shù)據(jù)庫(kù)、系統(tǒng)消息系統(tǒng)、事務(wù)管理器及其他軟件包通信。最主要的數(shù)據(jù)源邏輯就是數(shù)據(jù)庫(kù),主要責(zé)任是存儲(chǔ)持久數(shù)據(jù)。數(shù)據(jù)源邏輯主要關(guān)注與其他系統(tǒng)的交互,這些系統(tǒng)將代表應(yīng)邀完成相關(guān)的任務(wù)。主要的數(shù)據(jù)源邏輯就是數(shù)據(jù)庫(kù),它的主要職責(zé)是存儲(chǔ)持久數(shù)據(jù)。三層的關(guān)系:領(lǐng)域?qū)邮呛诵?!表現(xiàn)層是系統(tǒng)對(duì)外提供服務(wù)的外部接口;數(shù)據(jù)源層是系統(tǒng)使用外部服務(wù)的接口25、Larman的敏捷UP設(shè)計(jì)方法的具體步驟(1) 初始:大體上的構(gòu)想、業(yè)務(wù)案例、范圍和模糊評(píng)估。 (
52、2) 細(xì)化:已精化的構(gòu)想、核心架構(gòu)的迭代實(shí)現(xiàn)、高風(fēng)險(xiǎn)的解決、確定大多數(shù)需求和范圍以及進(jìn)行更為實(shí)際的評(píng)估。 (3) 構(gòu)造:對(duì)遺留下來(lái)的風(fēng)險(xiǎn)較低和比較簡(jiǎn)單地元素進(jìn)行迭代實(shí)現(xiàn),準(zhǔn)備部署。 (4) 移交:進(jìn)行beta測(cè)試和部署。26、4+1視圖 PPT 16頁(yè)“4+1”視圖模型即從5個(gè)不同的視角(邏輯視圖,進(jìn)程視圖,物理視圖,開(kāi)發(fā)視圖和場(chǎng)景視圖)來(lái)描述軟件體系結(jié)構(gòu)。每個(gè)視圖之關(guān)心系統(tǒng)的一個(gè)側(cè)面,5個(gè)視圖結(jié)合在一起才能反映系統(tǒng)的軟件體系結(jié)構(gòu)的全部?jī)?nèi)容。 邏輯視圖:描述架構(gòu)的重要元素及它們之間的關(guān)系 過(guò)程視圖:
53、描述架構(gòu)元素之間的并發(fā)和通信 物理視圖:描繪主要的過(guò)程和組件是如何映像到硬件上的 開(kāi)發(fā)視圖:俘獲軟件組件內(nèi)部的結(jié)構(gòu),如配置管理工具 架構(gòu)用例:俘獲架構(gòu)的需求;和不止一種視圖相關(guān) (邏輯視圖、流程視圖、實(shí)現(xiàn)視圖、部署視圖、用例視圖)27、應(yīng)用的集成策略Data expose application data for access by other components 公開(kāi)應(yīng)用程序數(shù)據(jù)供其他組件訪問(wèn)API offers services to read/write applicatio
54、n data through an abstracted interface 即數(shù)據(jù)公開(kāi)應(yīng)用程序數(shù)據(jù)訪問(wèn)的其他組件,提供服務(wù)來(lái)讀/寫應(yīng)用程序數(shù)據(jù)通過(guò)一個(gè)抽象接口28、上課講的例子ICDE系統(tǒng)的四張架構(gòu)圖 PPT1-8 108ICDE Performance Issues(1) Scalability 伸縮性(2) Modifiability 可變性(3) Security 安全性(4) Availability 實(shí)用性(有效性、可用性)(5) Integration 集成性NetworkClientObject ReferencerequestServerServantreplyclient
55、ORBserver ORB反應(yīng)對(duì)正常和極端用法的腳本的反應(yīng)是否足夠快可伸縮性系統(tǒng)的能力克根據(jù)需要增加或減少容量/產(chǎn)量處理大負(fù)荷仍有反應(yīng)安全性系統(tǒng)不會(huì)社會(huì)產(chǎn)生危害29、非功能屬性包括哪些(三種)PPT 12頁(yè)技術(shù)限制、業(yè)務(wù)約束、質(zhì)量屬性30、掌握:命令模式,狀態(tài)模式,裝飾模式,觀察者模式,策略模式,單例模式,工廠方法模式,抽象工廠模式,組合模式適配器模式,外觀模式,責(zé)任鏈模式的UML圖和java代碼命令模式(別名:動(dòng)作,事務(wù)) 將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而使你可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化;對(duì)請(qǐng)求排隊(duì)或記錄請(qǐng)求日志,以及支持可撤消的操作。狀態(tài)模式(別名:狀態(tài)對(duì)象) 允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變
56、時(shí)改變它的行為。觀察者模式(別名:依賴,發(fā)布-訂閱) 定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生變化時(shí),所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新。策略模式(別名:政策) 定義一系列算法,把它們一個(gè)個(gè)封裝起來(lái),并且使它們可相互替換。本模式使得算法可獨(dú)立于使用它的客戶而變化。單件模式 保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)。工廠方法模式(別名:虛擬構(gòu)造) 定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類決定實(shí)例化哪一個(gè)類。Factory Method使一個(gè)類的實(shí)例化延遲到其子類。抽象工廠模式(別名:配套) 提供一個(gè)創(chuàng)建一系列(相互依賴)對(duì)象的接口,而無(wú)需指定它們具體的類。組合模式 將對(duì)
57、象組合成數(shù)形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。Composite使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性。適配器模式(別名:包裝器) 將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作外觀模式 為系統(tǒng)中的一組接口提供一個(gè)一致的界面,F(xiàn)acade模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。30、凡是課件里有關(guān)架構(gòu)的具體例子(一般都有UML圖或有代碼)都需要仔細(xì)體會(huì),比如顯示學(xué)生成績(jī)和全名的程序的不同架構(gòu)方法,Inheritance/Composition Example 1的例子(person,agent,
58、passenger)的合理設(shè)計(jì)(在Review of Java and object-oriented programming PPT里55頁(yè)), PPT9 276頁(yè)31、計(jì)算應(yīng)收賬款(Revenue Recognition)(lecture9PPT175頁(yè)-42頁(yè))的不同設(shè)計(jì)方法,農(nóng)場(chǎng)計(jì)算動(dòng)物腳數(shù)的設(shè)計(jì)方法(lecture9PPT35頁(yè)-42頁(yè))等等(不一一列出了)。單例模式:?jiǎn)渭J?保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)。單件模式是關(guān)于怎樣設(shè)計(jì)一個(gè)類,并使得該類只有一個(gè)實(shí)例的成熟模式,該模式的關(guān)鍵是將類的構(gòu)造方法設(shè)置為private權(quán)限,并提供一個(gè)返回它的唯一實(shí)例的類方法1
59、單件類(Singleton): Moon.java public class Moon private static Moon uniqueMoon; double radius; double distanceToEarth; private Moon() uniqueMoon=this; radius=1738; distanceToEarth=363300; public static synchronized Moon getMoon() if(uniqueMoon=null) uniqueMoon=new Moon(); return uniqueMoon; public Strin
60、g show() String s="月亮的半徑是"+radius+"km,距地球是"+distanceToEarth+"km" return s; import javax.swing.*;import java.awt.*;public class Application public static void main(String args) MyFrame f1=new MyFrame("張三看月亮"); MyFrame f2=new MyFrame( "李四看月亮"); f1.setB
61、ounds(10,10,360,150); f2.setBounds(370,10,360,150); f1.validate(); f2.validate(); class MyFrame extends JFrame String str; MyFrame(String title) setTitle(title); Moon moon=Moon.getMoon(); str=moon.show(); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setVisible(true); repaint(); public void paint(Graphics g) super.paint(g); g.setFont(new Font("宋體",Font.BOLD,14); g.drawString(str,5,100); 工廠方法模式(別名:虛擬構(gòu)造) 定義一個(gè)用于創(chuàng)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 石河子大學(xué)《西方法律思想史》2021-2022學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《生態(tài)工程學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《基礎(chǔ)工程》2023-2024學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《電子技術(shù)》2022-2023學(xué)年期末試卷
- 沈陽(yáng)理工大學(xué)《信號(hào)變換》2021-2022學(xué)年第一學(xué)期期末試卷
- 沈陽(yáng)理工大學(xué)《計(jì)算機(jī)網(wǎng)絡(luò)與通信》2022-2023學(xué)年期末試卷
- 溫病息風(fēng)止痙法
- 消毒設(shè)備維護(hù)管理
- 沈陽(yáng)理工大學(xué)《光纖傳感技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣告合同高空作業(yè)免責(zé)協(xié)議書
- 中央空調(diào)人員培訓(xùn)內(nèi)容表
- 發(fā)現(xiàn)生活中的美-完整版PPT
- 小學(xué)道德與法治人教三年級(jí)上冊(cè)第三單元安全護(hù)我成長(zhǎng)-《遭遇陌生人》教案
- CAMDS操作方法及使用技巧
- 平狄克《微觀經(jīng)濟(jì)學(xué)》(第8版)筆記和課后習(xí)題詳解
- 最優(yōu)化理論與算法課程教學(xué)大綱
- 2022年湖北省武漢市江岸區(qū)育才第二小學(xué)六上期中數(shù)學(xué)試卷
- (最新版)中小學(xué)思政課一體化建設(shè)實(shí)施方案三篇
- PSA提氫裝置操作規(guī)程
- 水工隧洞概述(67頁(yè)清楚明了)
- 計(jì)算機(jī)維修工技能考核試卷
評(píng)論
0/150
提交評(píng)論