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

            linux&c++ R&D

            programing is a pleasure!

            Understand decorator design pattern

                The Decorator Pattern is used for adding additional functionality to a particular object as opposed to a class of objects. It is easy to add functionality to an entire class of objects by subclassing an object, but it is impossible to extend a single object this way. With the Decorator Pattern, you can add functionality to a single object and leave others like it unmodified.
               A Decorator, also known as a Wrapper, is an object that has an interface identical to an object that it contains. Any calls that the decorator gets, it relays to the object that it contains, and adds its own functionality along the way, either before or after the call. This gives you a lot of flexibility, since you can change what the decorator does at runtime, as opposed to having the change be static and determined at compile time by subclassing. Since a Decorator complies with the interface that the object that it contains, the Decorator is indistinguishable from the object that it contains.  That is, a Decorator is a concrete instance of the abstract class, and thus is indistinguishable from any other concrete instance, including other decorators.   This can be used to great advantage, as you can recursively nest decorators without any other objects being able to tell the difference, allowing a near infinite amount of customization.



            An example:

            #include <iostream>
            class IntCompute{
            public:
                virtual 
            int Compute(int,int=0;
            }
            ;
            class IntComputeAdd:public IntCompute{
            public:
            int Compute(int a,int b){
                
            return a+b;
            }

            }
            ;
            class DecorateMinusAdd:public IntCompute{
            private:
                IntComputeAdd intadd;
            public:
                
            int Compute(int a,int b)
                
            {
                  
            return -(intadd.Compute(a,b));

                }

            }
            ;
            class DecorateSumSquare:public IntCompute{
            private:
                IntComputeAdd intadd;
            public:
                
            int Compute(int a,int b)
                
            {
                    
            int result=intadd.Compute(a,b);
                    
            return result*result;

                }

            }
            ;
            int main()
            {
             
            DecorateMinusAdd minadd;
            DecorateSumSquare sumsquare;
            std::cout
            <<minadd.Compute(10,20)<<std::endl;
            std::cout
            <<sumsquare.Compute(10,20)<<std::endl;
             
            return 0;
            }

            posted on 2007-05-11 21:38 丑石 閱讀(479) 評論(0)  編輯 收藏 引用 所屬分類: software engineering


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            My Links

            Blog Stats

            News

            常用鏈接

            留言簿(1)

            隨筆分類(13)

            隨筆檔案(17)

            文章檔案(1)

            相冊

            收藏夾(1)

            Friends' blog

            useful sites

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            午夜精品久久久久久99热| 一级做a爰片久久毛片16| 久久影院久久香蕉国产线看观看| 99999久久久久久亚洲| 久久艹国产| 99久久人妻无码精品系列| 国产成人无码精品久久久久免费 | 久久久久久久久久久精品尤物| 无码人妻久久一区二区三区免费丨| 色狠狠久久AV五月综合| 欧美日韩精品久久免费| 久久一区二区三区免费| 亚洲AV无码久久精品成人| 91麻豆精品国产91久久久久久| 亚洲日本久久久午夜精品| 久久精品亚洲乱码伦伦中文| 久久亚洲国产午夜精品理论片| 久久精品天天中文字幕人妻 | 久久国产劲爆AV内射—百度| 色综合久久最新中文字幕| 久久亚洲熟女cc98cm| 久久精品国产精品亚洲人人 | 亚洲第一永久AV网站久久精品男人的天堂AV| 久久久久久久久久久精品尤物 | 久久久精品国产sm调教网站| 噜噜噜色噜噜噜久久| 91精品国产综合久久四虎久久无码一级| 狠狠色狠狠色综合久久| 亚洲精品乱码久久久久66| 亚洲午夜福利精品久久| 久久久久se色偷偷亚洲精品av| 久久香蕉国产线看观看99| 俺来也俺去啦久久综合网| 99久久夜色精品国产网站| 少妇熟女久久综合网色欲| 久久婷婷色综合一区二区| 久久国产香蕉一区精品| 久久免费99精品国产自在现线| 欧美伊人久久大香线蕉综合69| 国产99久久久久久免费看| 国产A级毛片久久久精品毛片|