• <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>

            C++研究

            C++細(xì)節(jié)深度探索及軟件工程

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              37 隨筆 :: 0 文章 :: 74 評論 :: 0 Trackbacks
            The Gof has 23 design patterns , but in most of  the design books , the E.G is written in Java , So  from now on , I will write about 23 articles to implement them using C++ , the design pattern itself is discussible , so welcome everyone to give his excelent idea to me , My QQ: 286259397 And My MSN : cxl82116@msn.com.
            Welcome every one to express his ideas!

             


            This is the Second Arcticle: ADAPTER PATTERN

            While
            referring to Adapter pattern , there must be a class that play the role of a adapter which can make two or more umcompatible class compatible . To explain this world , the UML diagram can make it clear easily :


                    diagram 2-1 Class Adapter UML (referred from http://terrylee.cnblogs.com)


                    diagram 2-2  Object Adapter UML (referred from http://terrylee.cnblogs.com)


            E.G Explain them sparetely:
            if a Customer request a  CUP WITH A CAP , but the orgin system can only supply a CUP , So you it's not compatible between the Request and the Orgin System , so you must find anthor factory who supply the cap ,and make it together to statisfy the customer ,  implement it in Class Adapter Pattern , Codes goes below.
            Class Adapter Pattern:

             1/********************************************************************
             2    created:    2007/04/21
             3    created:    21:4:2007   18:47
             4    filename:     c:\Visual Studio 2005\Projects\Frist2005\Frist2005\Frist2005.cpp
             5    file path:    c:\Visual Studio 2005\Projects\Frist2005\Frist2005
             6    file base:    Frist2005
             7    file ext:    cpp
             8    author:        Chang Xinglong(King.C)
             9    
            10    purpose:    Adapter Pattern -Class
            11*********************************************************************/

            12
            13#include "stdafx.h"
            14#include <map>
            15#include <iostream>
            16
            17using namespace std;
            18
            19class OrginSystem
            20{
            21
            22public:
            23    void Supply()
            24    {
            25        cout<<"Orgin:SupplyACup"<<endl;
            26    }

            27}
            ;
            28class CapSystem
            29{
            30public:
            31    void Supply()
            32    {
            33        cout<<"CapSystem:SupplyACap"<<endl;
            34    }

            35}
            ;
            36class Adapter: public OrginSystem , CapSystem
            37{
            38public:
            39    void Supply()
            40    {
            41        OrginSystem::Supply();
            42        CapSystem::Supply();
            43        cout<<"So the request has been satisfied!"<<endl;
            44    }

            45}
            ;
            46int _tmain(int argc, _TCHAR* argv[])
            47{
            48    Adapter _adpter;
            49    _adpter.Supply();
            50    system("pause");
            51    return 0;
            52}

            The Same question , implement it using Object Adapter Pattern:
             1/********************************************************************
             2    created:    2007/04/21
             3    created:    21:4:2007   18:47
             4    filename:     c:\Visual Studio 2005\Projects\Frist2005\Frist2005\Frist2005.cpp
             5    file path:    c:\Visual Studio 2005\Projects\Frist2005\Frist2005
             6    file base:    Frist2005
             7    file ext:    cpp
             8    author:        Chang Xinglong(King.C)
             9    
            10    purpose:    Adapter Pattern-Object 
            11*********************************************************************/

            12
            13#include "stdafx.h"
            14#include <map>
            15#include <iostream>
            16
            17using namespace std;
            18
            19class OrginSystem
            20{
            21
            22public:
            23    void Supply()
            24    {
            25        cout<<"Orgin:SupplyACup"<<endl;
            26    }

            27}
            ;
            28class CapSystem
            29{
            30public:
            31    void Supply()
            32    {
            33        cout<<"CapSystem:SupplyACap"<<endl;
            34    }

            35}
            ;
            36class Adapter: public OrginSystem , CapSystem
            37{
            38public:
            39    Adapter():_os(new OrginSystem),_cs(new CapSystem)
            40    {
            41
            42    }

            43    void Supply()
            44    {
            45        _os->Supply();
            46        _cs->Supply();
            47        cout<<"So the request has been satisfied!"<<endl;
            48    }

            49private:
            50    OrginSystem *_os;
            51    CapSystem * _cs;
            52}
            ;
            53int _tmain(int argc, _TCHAR* argv[])
            54{
            55    OrginSystem _orign=new _adpter();
            56    _orign.Supply();
            57    system("pause");
            58    return 0;
            59}

            60
            61

            In C++ , Muiltple-Derived pattern is not a recommend pattern, So if possible , use the Obeject -Adpter Pattern.

            That's all ,Thanks! if any different idea , send me E-mail.
            posted on 2007-04-21 19:13 常興龍 閱讀(1434) 評論(4)  編輯 收藏 引用 所屬分類: Design Patterns & Engeering

            評論

            # re: Implement "GOF's Adapter pattern" Using C++(Series of Gof patterns using C++ 2nd article) 2007-04-22 13:23 kurt
            I think the UML is enough for us to understand it  回復(fù)  更多評論
              

            # re: Implement "GOF's Adapter pattern" Using C++(Series of Gof patterns using C++ 2nd article) 2007-04-22 14:47 天津大學(xué)計算機學(xué)院 常興龍
            hehe ,thanks for your comment , it's just for the beginner study c++ systemly and this article can demostrate that how to implement interface( in Java , there is the Keyword interface) using virtual function in C++ , the uml itself didn't express this. Thanks again!  回復(fù)  更多評論
              

            # re: Implement "GOF's Adapter pattern" Using C++(Series of Gof patterns using C++ 2nd article) 2007-04-22 21:27 ★田德健★
            all are english....  回復(fù)  更多評論
              

            # re: Implement "GOF's Adapter pattern" Using C++(Series of Gof patterns using C++ 2nd article) 2007-09-12 15:47 Andrew Selivanov
            I suppose this would be more compatible version (see below)
            ----------------------------------------------------------
            #include <iostream>

            #define USE_ADAPTER
            #ifndef USE_ADAPTER

            class OrginSystem
            {

            public:
            void Supply()
            {
            std::cout<<"Orgin:SupplyACup"<<std::endl;
            }
            };
            class CapSystem
            {
            public:
            void Supply()
            {
            std::cout<<"CapSystem:SupplyACap"<<std::endl;
            }
            };
            class Adapter: public OrginSystem , CapSystem
            {
            public:
            void Supply()
            {
            OrginSystem::Supply();
            CapSystem::Supply();
            std::cout<<"So the request has been satisfied!"<<std::endl;
            }
            };

            int main()
            {
            Adapter adapter;
            adapter.Supply();
            }
            #else

            class OrginalSystem
            {

            public:

            virtual void Supply()
            {
            std::cout<<"Orgin:SupplyACup"<<std::endl;
            }
            };
            class CapSystem
            {
            public:
            virtual void Supply()
            {
            std::cout<<"CapSystem:SupplyACap"<<std::endl;
            }
            };
            class Adapter: public OrginalSystem , CapSystem
            {
            OrginalSystem* _os;
            CapSystem* _cs;

            public:
            Adapter():_os(new OrginalSystem),_cs(new CapSystem)
            {

            }
            void Supply()
            {
            _os->Supply();
            _cs->Supply();
            std::cout<<"So the request has been satisfied!"<<std::endl;
            }
            };

            int main()
            {
            OrginalSystem* original = new Adapter();
            original->Supply();
            delete original;
            }

            #endif
            ----------------------------------------------------------
            Andrew  回復(fù)  更多評論
              

            > hi的博客
            精品久久久久久无码中文字幕一区| 久久777国产线看观看精品| 久久99精品久久久久久噜噜| 国产精久久一区二区三区| 久久夜色精品国产www| 国产亚洲精品久久久久秋霞| 亚洲а∨天堂久久精品9966| 久久人人添人人爽添人人片牛牛| 久久久噜噜噜www成人网| 国内精品久久久久久中文字幕| 亚洲Av无码国产情品久久| 久久国产精品成人片免费| 久久精品无码一区二区三区免费 | 久久夜色精品国产噜噜亚洲a| 丁香色欲久久久久久综合网| 久久国产色AV免费看| 2019久久久高清456| 国产成人综合久久精品尤物| 久久综合狠狠综合久久| 亚洲国产一成久久精品国产成人综合| 久久亚洲春色中文字幕久久久 | 狠狠色综合网站久久久久久久高清| 久久婷婷五月综合97色一本一本| 久久性生大片免费观看性| 久久综合九色综合久99| 亚洲精品乱码久久久久久| 日韩va亚洲va欧美va久久| yellow中文字幕久久网| 精品乱码久久久久久久| 久久亚洲精品成人av无码网站| 亚洲乱码精品久久久久..| 青青草原综合久久大伊人导航| 国产免费久久精品丫丫| 亚洲国产天堂久久综合网站| 韩国三级大全久久网站| 国产精品久久99| 精品久久久久久国产| 色综合久久综精品| 国产 亚洲 欧美 另类 久久| 日本免费一区二区久久人人澡 | 成人久久精品一区二区三区|