程序設(shè)計(jì)模式觀(guān)察者模式_第1頁(yè)
程序設(shè)計(jì)模式觀(guān)察者模式_第2頁(yè)
程序設(shè)計(jì)模式觀(guān)察者模式_第3頁(yè)
程序設(shè)計(jì)模式觀(guān)察者模式_第4頁(yè)
程序設(shè)計(jì)模式觀(guān)察者模式_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、河南理工大學(xué)程序設(shè)計(jì)模式結(jié)課論文2012 2013學(xué)年第2學(xué)期論文題目關(guān)于observer模式的學(xué)習(xí)學(xué)生姓名學(xué) 號(hào)專(zhuān)業(yè)班級(jí) 軟件工程javalo-6班指導(dǎo)教師2013 年 7 月 3 日目錄摘要11. observer(觀(guān)察者模式)概述 22. observer(觀(guān)察者模式)的定義 23. observer(觀(guān)察者模式)的結(jié)構(gòu)和使用 34. observer白勺優(yōu)缺點(diǎn)45. 適合使用observer的情景56. observer在 java 中白勺應(yīng)用 67. 綜合應(yīng)用舉例88. 參考文獻(xiàn)10摘要設(shè)計(jì)模式(design pattern)是針對(duì)有一類(lèi)問(wèn)題的最佳解決方案,解決了在 某種特定情景中重

2、復(fù)發(fā)生的某個(gè)問(wèn)題。設(shè)計(jì)模式在程序設(shè)計(jì)中應(yīng)用廣泛,其遵循 一定的編程模式,使自己的代碼便于理解,易于交流。一個(gè)好的設(shè)計(jì)系統(tǒng)往往是 易維護(hù)、易擴(kuò)展、易復(fù)用的。設(shè)計(jì)模式的目的不是針對(duì)軟件設(shè)計(jì)和開(kāi)發(fā)中的每個(gè)問(wèn)題都給出解決方案,而 是針對(duì)某種特定環(huán)境中通常都會(huì)遇到的某種軟件開(kāi)發(fā)問(wèn)題給出的可重用的一些 解決方案,因此學(xué)習(xí)設(shè)計(jì)模式不僅可以使我們用好這些成功的模式,更重要的是 可以是我們更加深刻的理解而向?qū)ο蟮脑O(shè)計(jì)思想,有利于更好的地使用而向?qū)﹀?語(yǔ)言解決設(shè)計(jì)屮的問(wèn)題。模式不使用理論推導(dǎo)出來(lái)的,而是從真實(shí)世界的軟件系 統(tǒng)中被發(fā)現(xiàn)、按著一定規(guī)范總結(jié)出來(lái)的可以被復(fù)用的方案。在尋找新的模式之前, 必須先精通現(xiàn)有的模

3、式。通過(guò)研究學(xué)習(xí)現(xiàn)有的模式,可以比較容易地識(shí)別模式。面向?qū)ο蟪绦蛟O(shè)計(jì)中有很多種設(shè)計(jì)模式,大致可以分為三類(lèi):structural (結(jié)構(gòu)型),behavioral (行為型),creational (創(chuàng)建型)。在課堂上,老師已 經(jīng)講過(guò)創(chuàng)建型模式和結(jié)構(gòu)型模式所包含的共12種設(shè)計(jì)模式,本文所介紹的是 observer (觀(guān)察者)設(shè)計(jì)模式,其屬于behavioral模式。觀(guān)察者模式(有吋又 被稱(chēng)為發(fā)布/訂閱模式)是軟件設(shè)計(jì)模式的一種。在此種模式中,一個(gè)目標(biāo)對(duì)象 管理所有相依于它的觀(guān)察者對(duì)象,并且在它本身的狀態(tài)改變時(shí)主動(dòng)發(fā)出通知。這 通常透過(guò)呼叫各觀(guān)察者所提供的方法來(lái)實(shí)現(xiàn)。此種模式通常被用來(lái)實(shí)作事件處理

4、 系統(tǒng)。本文主要介紹了 observer (觀(guān)察者)設(shè)計(jì)模式相關(guān)理論性知識(shí)與實(shí)踐應(yīng)用, 通過(guò)對(duì)observer (觀(guān)察者)設(shè)計(jì)模式的分析、理解、學(xué)習(xí)和掌握,以加深對(duì)java 中的接口或抽象類(lèi)應(yīng)用的理解。關(guān)鍵詞:設(shè)計(jì)模式 面向?qū)ο髈bserver (觀(guān)察者)設(shè)計(jì)模式 理論與實(shí)踐應(yīng)用關(guān)于observer模式的學(xué)習(xí)1. observer (觀(guān)察者模式)概述觀(guān)察者模式(有時(shí)又被稱(chēng)為發(fā)布-訂閱模式、模型-視圖模式、源-收聽(tīng)者模 式或從屬者模式)是軟件設(shè)計(jì)模式的一種。在此種模式中,一個(gè)目標(biāo)物件管理所 有相依于它的觀(guān)察者物件,并且在它本身的狀態(tài)改變時(shí)主動(dòng)發(fā)出通知。這通常透 過(guò)呼叫各觀(guān)察者所提供的方法來(lái)實(shí)現(xiàn)。

5、此種模式通常被用來(lái)實(shí)作事件處理系統(tǒng)。 觀(guān)察者模式(observer)完美的將觀(guān)察者和被觀(guān)察的對(duì)彖分離開(kāi)。舉個(gè)例子,用 戶(hù)界面可以作為一個(gè)觀(guān)察者,業(yè)務(wù)數(shù)據(jù)是被觀(guān)察者,用戶(hù)界面觀(guān)察業(yè)務(wù)數(shù)據(jù)的變 化,發(fā)現(xiàn)數(shù)據(jù)變化后,就顯示在界面上。面向?qū)ο笤O(shè)計(jì)的一個(gè)原則是:系統(tǒng)中的 每個(gè)類(lèi)將重點(diǎn)放在某一個(gè)功能上,而不是其他方面。一個(gè)對(duì)象只做一件事情,并 且將他做好。觀(guān)察者模式在模塊之間劃定了清晰的界限,提高了應(yīng)用程序的可維 護(hù)性和重用性。實(shí)現(xiàn)觀(guān)察者模式的吋候要注意,觀(guān)察者和被觀(guān)察對(duì)象之間的互動(dòng)關(guān)系不能體 現(xiàn)成類(lèi)之間的直接調(diào)用,否則就將使觀(guān)察者和被觀(guān)察對(duì)象之間緊密的耦合起來(lái), 從根本上違反面向?qū)ο蟮脑O(shè)計(jì)的原則。無(wú)論是

6、觀(guān)察者“觀(guān)察”觀(guān)察對(duì)象,還是被 觀(guān)察者將自己的改變“通知”觀(guān)察者,都不應(yīng)該直接調(diào)用。2. observer觀(guān)察者模式)的定義根據(jù)gof所著design patterns中所述,observer模式可定義為:observer (觀(guān)察者模式)的定義為:defines a one-to-many dependency between objects so that when one objeet changes state, all its dependents are notified and updated automatically.即定義對(duì)象間的一種一對(duì)多的依賴(lài)關(guān)系,當(dāng)一個(gè) 對(duì)象的狀態(tài)發(fā)生變

7、化時(shí),多有依賴(lài)他的對(duì)象都得到通知并被自動(dòng)更新。觀(guān)察者:(observer)將自己注冊(cè)到被觀(guān)察對(duì)象(subject)中,被觀(guān)察對(duì)象將觀(guān) 察者存放在一個(gè)容器(container)里。被觀(guān)察:被觀(guān)察對(duì)象發(fā)生了某種變化(如圖中的somcchangc),從容器中得到所 有注冊(cè)過(guò)的觀(guān)察者,將變化通知觀(guān)察者。在此種模式中,一個(gè)冃標(biāo)對(duì)彖管理所有相依于它的觀(guān)察者對(duì)彖,并且在它本 身的狀態(tài)改變時(shí)主動(dòng)發(fā)出通知。這通常透過(guò)呼叫各觀(guān)察者所提供的方法來(lái)實(shí)現(xiàn)。3. observer (觀(guān)察者模式)的結(jié)構(gòu)和使用觀(guān)察者模式的組成部分:(1) 抽象目標(biāo)角色(subject):目標(biāo)角色知道它的觀(guān)察者,可以有任意多個(gè)觀(guān)察 者觀(guān)察同一

8、個(gè)目標(biāo)。并且提供注冊(cè)和刪除觀(guān)察者對(duì)象的接口。此抽象類(lèi)別提供一 個(gè)接口讓觀(guān)察者進(jìn)行添附與解附作業(yè)。類(lèi)別內(nèi)有個(gè)不公開(kāi)的觀(guān)察者串煉,并透過(guò) 下列函式(方法)進(jìn)行作業(yè)添附(attach):新增觀(guān)察者到串煉內(nèi),以追蹤目標(biāo)對(duì)彖的變化。解附(detach):將已經(jīng)存在的觀(guān)察者從串煉中移除。通知(notify):利用觀(guān)察者所提供的更新函式來(lái)通知此目標(biāo)己經(jīng)產(chǎn)牛變化。添附函式包涵了一個(gè)觀(guān)察者對(duì)象參數(shù)。也許是觀(guān)察者類(lèi)別的虛擬函式(即更新函 式),或是在非面向?qū)ο蟮脑O(shè)定中所使用的函式指標(biāo)(更廣泛來(lái)講,函式子或是函 式對(duì)彖)o(2) 抽象觀(guān)察者角色(observer):該類(lèi)別是一個(gè)必須被實(shí)做的抽象類(lèi)別。這個(gè)類(lèi) 別定義了

9、所有觀(guān)察者都擁有的更新用接口,此接口是用來(lái)接收目標(biāo)類(lèi)別所發(fā)出的 更新通知。此類(lèi)別含有以下函式更新(update):會(huì)被實(shí)做的一個(gè)抽象(虛擬)函式。(3) 具體目標(biāo)角色(concrete subject):提供了觀(guān)察者欲追蹤的狀態(tài),并將有關(guān) 狀態(tài)存入各個(gè)concrete observer對(duì)彖。利用其源類(lèi)別(例如前述的抽彖fl標(biāo)類(lèi) 別)所提供的方法,來(lái)通知所有的觀(guān)察者其狀態(tài)已經(jīng)更新。此類(lèi)別擁有函式取得狀 態(tài)(getstate):回傳該目標(biāo)對(duì)象的狀態(tài)。(4) 具體觀(guān)察者角色(concrete observer):存儲(chǔ)有關(guān)狀態(tài),這些狀態(tài)應(yīng)與目標(biāo) 的狀態(tài)保持一致。這個(gè)類(lèi)別含有指向目標(biāo)類(lèi)別的參考(refe

10、rence),以接收來(lái)自 目標(biāo)類(lèi)別的更新?tīng)顟B(tài)。實(shí)現(xiàn)observer的更新接口以使自身狀態(tài)與fl標(biāo)的狀態(tài)保 持一致。在本角色內(nèi)也可以維護(hù)一個(gè)指向concrete subject對(duì)象的引用。此類(lèi) 別含有以下函式更新(update):是前述抽象函式的實(shí)做。當(dāng)這個(gè)函式被目標(biāo)對(duì)象 呼叫時(shí),觀(guān)察者對(duì)象將會(huì)呼叫目標(biāo)對(duì)象的取得狀態(tài)函式,來(lái)其所擁有的更新目標(biāo) 對(duì)象資訊。每個(gè)觀(guān)察者類(lèi)別都要實(shí)做它自己的更新函式,以應(yīng)對(duì)狀態(tài)更新的情形。當(dāng)冃 標(biāo)對(duì)象改變時(shí),會(huì)通過(guò)呼叫它自己的通知函式來(lái)將通知送給每一個(gè)觀(guān)察者對(duì)象, 這個(gè)通知函式則會(huì)去呼叫已經(jīng)添附在串煉內(nèi)的觀(guān)察者更新函式。通知與更新函式 可能會(huì)有一些參數(shù),好指明是目前目標(biāo)

11、對(duì)象內(nèi)的何種改變。這么作將可增進(jìn)觀(guān)察 者的效率(只更新那些改變部份的狀態(tài))。觀(guān)察者模式的uml類(lèi)圖結(jié)構(gòu):4. observer的優(yōu)缺點(diǎn)observer模式的優(yōu)點(diǎn)是實(shí)現(xiàn)了表示層和數(shù)據(jù)邏輯層的分離,并定義了穩(wěn)定 的更新消息傳遞機(jī)制,類(lèi)別清晰,并抽象了更新接口,使得可以有各種各樣不同 的表示層(觀(guān)察者)。但是其缺點(diǎn)是每個(gè)外觀(guān)對(duì)象必須繼承這個(gè)抽像出來(lái)的接口 類(lèi),這樣就造成了一些不方便,比如有一個(gè)別人寫(xiě)的外觀(guān)對(duì)象,并沒(méi)有繼承該抽 象類(lèi),或者接口不對(duì),我們又希望不修改該類(lèi)直接使用它。雖然可以再應(yīng)用 adapter模式來(lái)一定程度上解決這個(gè)問(wèn)題,但是會(huì)造成更加復(fù)雜煩瑣的設(shè)計(jì),增 加出錯(cuò)兒率。觀(guān)察者模式的效果有

12、以下幾個(gè)優(yōu)點(diǎn):(1)觀(guān)察者模式在被觀(guān)察者和觀(guān)察者z間建立一個(gè)抽彖的耦合。被觀(guān)察者角色 所知道的只是一個(gè)具體現(xiàn)察者聚集,每一個(gè)具體現(xiàn)察者都符合一個(gè)抽象觀(guān) 察者的接口。被觀(guān)察者并不認(rèn)識(shí)任何一個(gè)具體觀(guān)察者,它只知道它們都有 一個(gè)共同的接口。由于被觀(guān)察者和觀(guān)察者沒(méi)有緊密地耦合在一起,因此它 們可以屬于不同的抽象化層次。(2) 觀(guān)察者模式支持廣播通信。被觀(guān)察者會(huì)向所有的登記過(guò)的觀(guān)察者發(fā)出通知。 觀(guān)察者模式有下面的一些缺點(diǎn):(1) 如果一個(gè)被觀(guān)察者對(duì)象有很多直接和間接的觀(guān)察者的話(huà),將所有的觀(guān)察者 都通知到會(huì)花費(fèi)很多時(shí)間。(2) 如果在被觀(guān)察者之間有循環(huán)依賴(lài)的話(huà),被觀(guān)察者會(huì)觸發(fā)它們之間進(jìn)行循環(huán) 調(diào)用,導(dǎo)致系

13、統(tǒng)崩潰。在使用觀(guān)察考模式時(shí)要特別注意這一點(diǎn)。(3) 如果對(duì)觀(guān)察者的通知是通過(guò)另外的線(xiàn)程進(jìn)行界步投遞的話(huà),系統(tǒng)必須保證 投遞是以自恰的方式進(jìn)行的。(4) 雖然觀(guān)察者模式可以隨時(shí)使觀(guān)察者知道所觀(guān)察的對(duì)象發(fā)生了變化,但是觀(guān) 察者模式?jīng)]有相應(yīng)的機(jī)制使觀(guān)察者知道所觀(guān)察的對(duì)象是怎么發(fā)生變化的。5.適合使用observer的情景課本中所介紹的適合使用observer的情景有兩種,一種是當(dāng)一個(gè)對(duì)象的數(shù) 據(jù)更新是需要通知其他對(duì)象,但這個(gè)對(duì)象又不希望和被通知的那些對(duì)象形成緊耦 合,即封裝這些層面在單獨(dú)的對(duì)象內(nèi)將可允許程式設(shè)計(jì)師單獨(dú)地去變更與重復(fù)使 用這些對(duì)象,而不會(huì)產(chǎn)生兩者之間交互的問(wèn)題。另一種是當(dāng)一個(gè)對(duì)象的數(shù)據(jù)

14、更新 時(shí),這個(gè)對(duì)彖需要讓其他對(duì)彖也各自更行自己的數(shù)據(jù),但這個(gè)對(duì)彖不知道具體有 多少個(gè)對(duì)象需要更新數(shù)據(jù)。除此之外,我還查找了一些其他適于應(yīng)用該模式的情況,如:當(dāng)對(duì)象應(yīng)該有 能力通知其他對(duì)象,乂不應(yīng)該知道其他對(duì)象的實(shí)做細(xì)節(jié)時(shí),也可以用觀(guān)察者模式。觀(guān)察者模式通常與mvc范式有關(guān)系。在mvc中,觀(guān)察者模式被用來(lái)降低 model與view的耦合程度。一般而言,model的改變會(huì)觸發(fā)通知其他身為觀(guān) 察者的model o而這些model實(shí)際上是view。java swing就是個(gè)范例,示 意了 model預(yù)期會(huì)透過(guò)propertychangenotification架構(gòu)以送tb改變的通知 給其他view。m

15、odel類(lèi)別是java bean類(lèi)別的一員,并擁有與上述目標(biāo)類(lèi)別 同樣的行為。view類(lèi)別則系結(jié)了一些gui中的可視元素,并擁有與上述觀(guān)察 者類(lèi)別同樣的行為。當(dāng)應(yīng)用程式在執(zhí)行時(shí)。使用者將因view做岀相應(yīng)的更新而 看見(jiàn)model所產(chǎn)生的變更。6. observer在java中的應(yīng)用在java中通過(guò)observable類(lèi)和observer接口實(shí)現(xiàn)了觀(guān)察者模式oobserver 對(duì)象是觀(guān)察者,observable對(duì)象是被觀(guān)察者。實(shí)現(xiàn)觀(guān)察者模式(1) 創(chuàng)建被觀(guān)察者類(lèi),它繼承自java. util. observable類(lèi);(2) 創(chuàng)建觀(guān)察者類(lèi),它實(shí)現(xiàn)java. util. observer接口;(3

16、) 對(duì)于被觀(guān)察者類(lèi),i > 添加它的觀(guān)察者:void addobserver(observer o)addobserver()方法 把觀(guān)察者對(duì)象添加到觀(guān)察者對(duì)象列表中。ii、當(dāng)被觀(guān)察事件發(fā)生時(shí),執(zhí)行:setchanged():notifyobservers(): setchangeo方法用來(lái)設(shè)置一個(gè)內(nèi)部標(biāo)志位注明數(shù)據(jù)發(fā)生了變化; notifyobservers ()方法會(huì)去調(diào)用觀(guān)察者對(duì)象列表屮所有的observer的 update()方法,通知它們數(shù)據(jù)發(fā)生了變化。只有在setchange()被調(diào)用后, notifyobservers ()才會(huì)去調(diào)用 update ()。對(duì)于觀(guān)察者類(lèi),實(shí)現(xiàn)

17、observer接口的唯一方法update void update (observable o, object arg)形參 object arg,對(duì)應(yīng)一個(gè)由 notifyobservers (object arg);傳遞來(lái)的參數(shù), 當(dāng)執(zhí)行的是 notifyobservers();時(shí),arg 為 nul 1。以下是電了商務(wù)實(shí)例中關(guān)于observer的應(yīng)用:當(dāng)下網(wǎng)上商店形式多樣,每個(gè)站點(diǎn)有自己的特色,但也有其一般的共性,單就“商 品的變化,以便及時(shí)通知訂戶(hù)”這一點(diǎn),是很多網(wǎng)上商店共有的模式,這一模式 類(lèi)似observer pattern觀(guān)察者模式。具體的說(shuō),如果網(wǎng)上商店中商品在名稱(chēng)、價(jià)格等方面有

18、變化,如果系統(tǒng)能自動(dòng)通 知會(huì)員,將是網(wǎng)上商店區(qū)別傳統(tǒng)商店的一大特色。這就需要在商品product中加 入observer這樣角色,以便product細(xì)節(jié)發(fā)生變化時(shí),observer能自動(dòng)觀(guān)察到 這種變化,并能進(jìn)行及時(shí)的update或not辻y動(dòng)作。具體代碼如下:/產(chǎn)甜類(lèi) 可供jsp直接使用uscbcan調(diào)用該類(lèi),主要執(zhí)行產(chǎn)品數(shù)據(jù)庫(kù)插入、更 新publ ic class product extends observableprivate string name;private float price;public string getnameo return name;public void s

19、etname(string name) this. name=name;/設(shè)置變化點(diǎn)sctchangedo ;notifyobservers(name);!public float getprice() return price;public void setprice(float price)this. price=price;/設(shè)置變化點(diǎn)setchangedo ;notifyobservers (new float (price);i/以下可以是數(shù)據(jù)庫(kù)更新插入命令.public void savetodb()我們注意到,在product類(lèi)中的setxxx方法中,我們?cè)O(shè)置了 notify (

20、通知) 方法,當(dāng)jsp表單調(diào)用setxxx,實(shí)際上就觸發(fā)了 notisfyobservers方法,這將 通知相應(yīng)觀(guān)察者應(yīng)該采取行動(dòng)了。7. 綜合應(yīng)用舉例該例子演示了:老師有電話(huà)號(hào)碼,學(xué)生需要知道老師的電話(huà)號(hào)碼以便于在合 時(shí)的時(shí)候撥打,在這樣的組合中,老師就是一個(gè)被觀(guān)察者(subject),學(xué)生就是 需要知道信息的觀(guān)察者(obsewec,當(dāng)老師的電話(huà)號(hào)碼發(fā)生改變時(shí),學(xué)生得到 通知,并更新相應(yīng)的電話(huà)記錄。/ subject 代碼package observer;import java.util.observer;public interface subject public void attach

21、(observer o);public void detach(observer o);public void notice();/ observer 代碼package observer;public in terface observer public void update);/ teacher 代碼package observer;import java.util.vector;public class teacher implements subjectprivate string phone;private vector students;public teacher()phone

22、 =u"stude nts = new vector();public void attach(observer o)stude nts.add(o);public void detach(observer o)stude nts.remove(o);public void notice()for(int i=o;i<students.size();i+)(observer)stud en ts.get(i).updated;public void setphone(string phone)this.ph one = phone;no tice();public string

23、 getphone() return phone; overridepublic void attach(java.util.observer o) /todo auto-generated method stub overridepublic void detach(java.util.observer o) / todo auto-generated method stub/ student 代碼package observer;import java.util.observable;import java.util.observer;public class student implem

24、ents observerprivate string name;private string phone;private teacher teacher;public student(string name,teacher t)this, name = n ame;teacher = t;public void show()system.out.printlnc'name:11+name+nleaches phone:h+this.getteacher().getphone();public void update()pho ne = this.getteacher().getpho

25、ne();(©overridepublic void update(observable o, object arg) / todo auto-generated method stub/client 代碼package observer;import java.util.vector;public class clientpublic static void main(string args)vector students = new vector);teacher t = new teacher();forfint i= 0 ;i<10;i+)student st = ne

26、w student(h軟件 lojavar+it);students.add(st);t.attach(st);t.setphone(quot;);for(int i=0;i<10;i«+)(stude nt)stude nts.get(i).show();t.setphone("quot;);forfint i=0;i<10;i+) (student)students.get(i).show();運(yùn)行結(jié)果截圖:nair.e :軟件10匚己$己:0teacher phenenair.e :軟件logva teacher呂 phonenair.e :軟件lorva teach皂phon皂name :軟件 10 jas teacherphonename:軟件 lojava teacher's phonename:軟件 10 java teacherphonename :軟件lojavateachers phonenair.e :軟件teacher's phonezaire :軟件locvateacher phonenair.e :teacher's uhene0391-777777710391-777

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論