乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      【設(shè)計(jì)模式學(xué)習(xí)】MFC 中的設(shè)計(jì)模式分析

       嘆落花 2015-01-11

      最近在學(xué)習(xí)設(shè)計(jì)模式,突然想到MFC里面其實(shí)也包含有設(shè)計(jì)模式的原理,于是分析了一下,做一個(gè)筆記,網(wǎng)上也找了一些資料,在此一并感謝。


      創(chuàng)建型模式
      單例模式(Singleton Pattern)
      單例模式確保某一個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。這個(gè)類稱為單例類。

      任何MFC應(yīng)用程序的第一步就是創(chuàng)建一個(gè)應(yīng)用程序?qū)ο?CWinApp或者其子類的實(shí)例)。在一個(gè)MFC應(yīng)用程序中只能有一個(gè)應(yīng)用程序?qū)ο?,而且只有一個(gè)獲取這個(gè)對象的全局入口點(diǎn)(AfxGetApp()),所以CWinApp及其子類均屬于單例類(Singleton class)。

      結(jié)構(gòu)型模式

      橋接模式(Bridge Pattern)橋接模式是指將接口和實(shí)現(xiàn)解耦,從而二者可以獨(dú)立變化。

      在MFC中,將對象存儲(chǔ)到持久化介質(zhì)中或者從持久化介質(zhì)取回對象的機(jī)制稱為序列化/反序列化(Serialization/Deserialization)。MFC使用橋接模式實(shí)現(xiàn)了序列化/反序列化,CArchive類提供了序列化/反序列化的接口,而CFile及其子類則提供了序列化/反序列化的實(shí)現(xiàn)(比如內(nèi)存、硬盤文件、Sockets等等)。
      CArchive接受一個(gè)CFile或者其子類的對象作為構(gòu)造函數(shù)的參數(shù),從而獲取包括文件名稱、請求的操作類型(讀/寫)等必需的序列化信息。客戶端使用CArchive對象執(zhí)行序列化/反序列化操作,而無需關(guān)心CFile所采取的具體的持久化機(jī)制。

      行為型模式
      觀察者模式(Observer Pattern)
      在此種模式中,一個(gè)目標(biāo)物件管理所有相依于它的觀察者物件,并且在它本身的狀態(tài)改變時(shí)主動(dòng)發(fā)出通知。這通常透過呼叫各觀察者所提供的方法來實(shí)現(xiàn)。
      MFC中的文檔/視圖結(jié)構(gòu)其實(shí)是觀察者模式的一種變體。文檔包含數(shù)據(jù)對象,充當(dāng)目標(biāo)角色;用戶通過視圖更新文檔,視圖在這里充當(dāng)觀察者角色。一個(gè)文檔可以有多個(gè)視圖。一旦用戶通過某個(gè)視圖改變了文檔的數(shù)據(jù)對象,該視圖將通過調(diào)用UpdateAllViews方法來更新文檔。這將觸發(fā)OnUpdate方法,從而通知其他與文檔關(guān)聯(lián)的視圖更新顯示。視圖類通過重載OnUpdate方法從文檔對象獲取更新數(shù)據(jù)。


      模板方法模式

      模板方法模式中,基類用一些抽象的操作定義了一個(gè)算法的骨架,子類重定義算法中的特定部分,以完成特定于子類的各種操作。類CView(AbstractClass)里面的函數(shù)OnPaint、OnDraw。用戶只需在CView的派生類中的OnDraw
      函數(shù)中編寫代碼就可實(shí)現(xiàn)數(shù)據(jù)的正確顯示,而不必關(guān)心OnDraw如何被調(diào)用。


      職責(zé)鏈模式 

      多個(gè)對象組成一個(gè)對象鏈,客戶請求沿著對象鏈進(jìn)行傳播,直到有一個(gè)對象處理它。在MFC中,所有派生自CCmdTarget的類都能夠響應(yīng)命令消息(WM_COMMAND),所有派生自CWnd的類都能夠響應(yīng)標(biāo)準(zhǔn)Windows消息(除 WM_COMMAND 之外的消息)。因 CWnd派生于CCmdTarget類,故派生自CWnd的類也可響應(yīng)命令消息。

      中介模式

      用一個(gè)中介對象來封裝一系列的對象交互。中介模式將一系列對象間的多對多的通信轉(zhuǎn)化為中介對象與各個(gè)對象的一對多的通信,從而使其耦合松散,而且可以獨(dú)立的改變它們之間的交互。

      MFC中對話框類作為中介類,對話框上的其它控件作為同事類。如編輯框,按鈕,下拉鏈表框等。當(dāng)對話框上的兩個(gè)或多個(gè)控件需要通信時(shí)(如編輯框輸入有效數(shù)據(jù)后使按鈕使能),發(fā)送消息的控件首先將消息發(fā)送到它的父窗口(對話框),然后父窗口將收到的消息轉(zhuǎn)發(fā)到各目標(biāo)控件。


      參考資料:http://blog.csdn.net/guolongcang/article/details/6754424

                         http://hi.baidu.com/piperworldcup/blog/item/1c54f7af12b1b1fefaed507f.html

                         http://wenku.baidu.com/view/c7ca4bd950e2524de5187edd.html

      http://blog.csdn.net/hero06/article/details/7529681

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多