freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第八講設(shè)計(jì)模式(已改無(wú)錯(cuò)字)

2022-11-10 13:25:56 本頁(yè)面
  

【正文】 模式進(jìn)行訪問(wèn)。它們對(duì)子系統(tǒng)的實(shí)現(xiàn)提供了防止變異,并且通過(guò)增加間接性對(duì)象有助于低耦合的支持。外部對(duì)象只被耦合到子系統(tǒng)中的一個(gè)點(diǎn):即外觀對(duì)象 ? 適配器對(duì)象可能用來(lái)封裝對(duì)具有不同接口的外部系統(tǒng)的訪問(wèn)。這就是一種外觀,但是其強(qiáng)調(diào)的是對(duì)不同接口的適配,因此被更具體地稱為適配器。 觀察者 /發(fā)布 訂閱 /委派事件模型( GoF) ? 問(wèn)題:當(dāng)總額變化后, GUI窗口要能刷新銷售總額的顯示 觀察者( GoF) ? 解決方案一:當(dāng) Sale更新了總額后, Sale對(duì)象向窗口發(fā)生消息,使其刷新顯示。 ? 模型 視圖分離原則不提倡此類解決方案。它認(rèn)為”模型“對(duì)象(諸如 Sale這樣的非 UI對(duì)象)不應(yīng)該知道像窗口這樣的視圖或表示對(duì)象。它改進(jìn)了其他層與表示( UI)層對(duì)象的低耦合。支持這種低耦合的結(jié)果是,它允許替換現(xiàn)有視圖或表示層,或者可以使用新的窗口來(lái)代替特定窗口,同時(shí)不會(huì)對(duì)非 UI對(duì)象產(chǎn)生影響。例如,如果模型對(duì)象不知道 Java Swing對(duì)象,那么就可能拔掉 Swing接口,或者拔掉特定窗口,然后插入其他什么。 ? 因此,模型 視圖分離對(duì)變化的用戶界面提供了防止變異。 觀察者( GoF) ? 名稱:觀察者( Observer)(發(fā)布 訂閱( PublishSubscribe)) ? 問(wèn)題:不同類型的訂閱者對(duì)象關(guān)注與發(fā)布者對(duì)象的狀態(tài)變化或事件,并且想要在發(fā)布者產(chǎn)生事件時(shí)以自己獨(dú)特的方式作出反應(yīng)。此外,發(fā)布者想要保持與訂閱者的低耦合。如何對(duì)此進(jìn)行設(shè)計(jì)呢? ? 解決方案(建議):定義”訂閱者“或”監(jiān)視器“接口。訂閱者實(shí)現(xiàn)此接口。發(fā)布者可以動(dòng)態(tài)注冊(cè)關(guān)注某事件的訂閱者,并在事件發(fā)生時(shí)通知它們 觀察者( GoF) 示例 觀察者模式 觀察者( GoF) 示例 觀察者 SaleFrame1向發(fā)布者 Sale訂閱 觀察者( GoF) 示例 Sale向其所有訂閱者發(fā)布特性事件 觀察者( GoF) 示例 訂閱者 SaleFrame1接收已發(fā)布事件的通知 觀察者( GoF) 總結(jié) ? 觀察者在對(duì)象通信方面提供了一種松耦合方式。發(fā)布者只通過(guò)接口獲知訂閱者,訂閱者可以動(dòng)態(tài)地向發(fā)布者注冊(cè)(或取消注冊(cè)) ? 從前面的例子我們可以得出結(jié)論:基于模式的支持能夠進(jìn)行對(duì)象設(shè)計(jì)和職責(zé)分配。這些模式提供了一套可解釋的慣用做法,設(shè)計(jì)良好的面向?qū)ο笙到y(tǒng)可以建立于該基礎(chǔ)之上。 抽象工廠 ( Abstract Factory) ? 圖中一共有四個(gè)產(chǎn)品族,分布于三個(gè)不同的產(chǎn)品等級(jí)結(jié)構(gòu)中。只要指明一個(gè)產(chǎn)品所處的產(chǎn)品族以及它所屬的等級(jí)結(jié)構(gòu),就可以唯一的確定這個(gè)產(chǎn)品。 ? 所謂的抽象工廠是指一個(gè)工廠等級(jí)結(jié)構(gòu)可以創(chuàng)建出分屬于不同產(chǎn)品等級(jí)結(jié)構(gòu)的一個(gè)產(chǎn)品族中的所有對(duì)象。如果用圖來(lái)描述的話,如下圖: 53 抽象工廠 ( Abstract Factory) 抽象工廠的起源 ? 據(jù)說(shuō)最早的應(yīng)用是用來(lái)創(chuàng)建在不同操作系統(tǒng)的視窗環(huán)境下都能夠運(yùn)行的系統(tǒng) 54 ? 可以發(fā)現(xiàn)上面產(chǎn)品類圖有兩個(gè)產(chǎn)品等級(jí)結(jié)構(gòu) ,分別是Button與 Text;同時(shí)有兩個(gè)產(chǎn)品族 : Unix產(chǎn)品族與 Windows產(chǎn)品族。 55 抽象工廠的起源 ? 系統(tǒng)對(duì)產(chǎn)品對(duì)象的創(chuàng)建要求由一個(gè)工廠的等級(jí)結(jié)構(gòu)滿足。其中有兩個(gè)具體工廠角色,即 UnixFactory和 WinFactory。UnixFactory對(duì)象負(fù)責(zé)創(chuàng)建 Unix產(chǎn)品族中的產(chǎn)品,而WinFactory負(fù)責(zé)創(chuàng)建 Windows產(chǎn)品族中的產(chǎn)品。 56 抽象工廠的起源 抽象工廠模式 的 結(jié)構(gòu) 57 ? 上圖中的結(jié)構(gòu)用產(chǎn)品族描述如下: 58 抽象工廠 模式 中的四個(gè)角色 ? 抽象工廠 ( Abstract Factory)角色:擔(dān)任這個(gè)角色的是工廠方法模式的核心,它是與應(yīng)用系統(tǒng)商業(yè)邏輯無(wú)關(guān)的 。 ? 具體工廠 ( Concrete Factory)角色:這個(gè)角色直接在客戶端的調(diào)用下創(chuàng)建產(chǎn)品的實(shí)例。這個(gè)角色含有選擇合適的產(chǎn)品對(duì)象的邏輯,而這個(gè)邏輯是與應(yīng)用系統(tǒng)的商業(yè)邏輯緊密相關(guān)的 。 ? 抽象產(chǎn)品 ( Abstract Product)角色:擔(dān)任這個(gè)角色的類是工廠方法模式所創(chuàng)建的對(duì)象的父類,或它們共同擁有的接口 。 ? 具體產(chǎn)品 ( Concrete Product)角色:抽象工廠模式所創(chuàng)建的任何產(chǎn)品對(duì)象都是某一個(gè)具體產(chǎn)品類的實(shí)例。這是客戶端最
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1