• <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 丑石 閱讀(481) 評論(0)  編輯 收藏 引用 所屬分類: software engineering

            My Links

            Blog Stats

            News

            常用鏈接

            留言簿(1)

            隨筆分類(13)

            隨筆檔案(17)

            文章檔案(1)

            相冊

            收藏夾(1)

            Friends' blog

            useful sites

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            欧美久久亚洲精品| 久久精品aⅴ无码中文字字幕重口| 久久免费精品视频| 久久一本综合| 国产三级久久久精品麻豆三级 | 久久精品国产只有精品2020| 亚洲国产成人久久精品动漫| 久久久久国产精品人妻| 久久综合狠狠色综合伊人| 久久精品中文字幕一区 | 国内精品欧美久久精品| 日韩人妻无码一区二区三区久久| 久久精品亚洲精品国产欧美| 久久亚洲私人国产精品vA | 久久天天躁狠狠躁夜夜躁2014| 国产成人精品久久一区二区三区| 久久精品国产男包| 久久久99精品成人片中文字幕| 久久婷婷五月综合国产尤物app| 久久一区二区三区免费| 国产精品永久久久久久久久久| 无码人妻精品一区二区三区久久| 久久综合九色综合欧美就去吻| 久久香蕉国产线看观看99| 久久亚洲中文字幕精品有坂深雪| 久久久精品国产免大香伊| 久久天天婷婷五月俺也去| 性欧美大战久久久久久久| 久久亚洲2019中文字幕| 久久久久亚洲精品天堂久久久久久| 久久国产乱子精品免费女| 韩国无遮挡三级久久| 88久久精品无码一区二区毛片| 99精品久久精品| 久久九九青青国产精品| 91精品国产综合久久香蕉| 国产精品久久久久久影院 | 久久国产精品-久久精品| 久久精品免费观看| 精品久久人人做人人爽综合| 久久精品亚洲福利|