• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            積木

            No sub title

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              140 Posts :: 1 Stories :: 11 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(1)

            我參與的團隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            設計模式學習總結之二

            三:Singleton模式(單實例模式)

             顧名思義,即單例模式。其主要思想就是在項目中,僅創建一個實例對象。該對象的抽象,除了通過指定的獲取實例接口外,再沒其他辦法可以初始化。
            此可以保證整個系統生命周期內,僅會有一個實例存在??梢韵胂笠幌拢强梢耘c先前說的工廠模式或抽象工廠模式結合使用的。因為一般來說,工廠可能只會
            有一個(至少對某種邏輯處理來說是這樣的)。
             在C++中,實現單例模式,相對比較直觀及合理。將該實例定義成static成員即可。并提供獲取及釋放該成員的接口。而在delphi中,(就本來的了解來說)
            似乎并沒有直觀的靜態成員這一說法。但可以定義一個全局變量,并提供獲取與釋放變量的接口來模擬。(但,畢竟沒辦法同類型的實例被創建出來,所以最好要加
            詳細注釋說明。告知其他組員,此為單實例)

             參考的c++實現:
             class CA
             {
             private:
              CA(){}
             private:
              static CA* m_pAObj;
             public:
              virtual ~CA(){}
              static CA* GetAObj(void)
              {
               if (m_pAObj == NULL)
                m_pAObj = new CA();
               return m_pAObj;
              }
              static void SafeReleaseAObj(void)
              {
               if (m_pAObj != NULL)
                delete m_pAObj;
               m_pAObj = NULL;
              }
             };
             static CA* CA::m_pAObj = NULL;

             參考的Delphi實現:
             unit xxx
             interface
             uses
               xxx,...,yyy;
             type
               TMyClass = class
               //xxxx
               end;
             var
               gAObj: TMyClass;//此為全局的單實例對象。
             function GetAObj: TMyClass;
             procedure SafeReleaseAObj;
             implemention//這個單詞忘了是不是這么寫。反應是實現的那個單詞。。
             procedure SafeReleaseAObj;
             begin
               if Assigned(gAObj) then
                 FreeAndNil(gAObj);
             end;
             funciton GetAObj: TMyClass;
             begin
               if not Assigned(gAObj) then
                 gAObj = TMyClass.Create;
               Result := gAObj;
             end;

             //說明:以上僅是臨時寫的,并未在程序中編譯測試。但思路肯定不會錯??晒﹨⒖加?。
             
            四:Builder模式(即:構建模式)

             往往在實際項目的開發過程中會發現,某些模塊的功能過于復雜。此時,我們自然就會想到將其進行進一步的劃分。如:細分成DA,DB,...,DN。然后由該模塊的某個管理角色進行協調運作。
            這樣,Builder模式將可用在此設計上。其思想,就是將復雜問題進一步細化。

            posted on 2011-05-15 15:31 Jacc.Kim 閱讀(299) 評論(0)  編輯 收藏 引用 所屬分類: 設計模式
            品成人欧美大片久久国产欧美... 品成人欧美大片久久国产欧美 | 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 久久国产亚洲精品无码| 久久99热只有频精品8| 欧美激情精品久久久久| 麻豆久久久9性大片| 97久久超碰成人精品网站| 久久99久久成人免费播放| 亚洲香蕉网久久综合影视| 99久久国产热无码精品免费久久久久| 久久99精品久久久久久不卡 | 国产高潮国产高潮久久久91 | 国产精品热久久无码av| 亚洲精品无码久久久久去q| 久久这里只有精品首页| 久久夜色撩人精品国产| 久久国产免费观看精品3| 欧美精品一区二区久久| 热久久国产精品| 久久精品国产第一区二区三区| 久久成人小视频| 久久露脸国产精品| 91久久精品国产91性色也| 精品久久久无码人妻中文字幕豆芽 | 久久精品国产精品青草app| 狠狠精品久久久无码中文字幕| 精品久久人人做人人爽综合| av无码久久久久不卡免费网站| 伊人久久大香线蕉综合Av| 亚洲国产成人久久笫一页| 久久人人爽人爽人人爽av| 精品免费久久久久国产一区| 热99re久久国超精品首页| 久久精品欧美日韩精品| 日韩乱码人妻无码中文字幕久久| 狠狠色丁香久久婷婷综合蜜芽五月| 久久人人爽人人澡人人高潮AV| 丁香五月综合久久激情| 久久99精品久久久久久齐齐| 久久人搡人人玩人妻精品首页| 久久精品一区二区三区中文字幕|