zoukankan      html  css  js  c++  java
  • 设计模式(三):装饰模式

      装饰模式,是面向对象编程领域中,一种动态地往一个类中添加新的行为的设计模式。就功能而言,修饰模式相比生成子类更为灵活,这样可以给某个对象而不是整个类添加一些功能。

      大概明白,还没想好怎么说明

      

    #include <iostream>
    
    
    using namespace std;
    
    
    class Widget
    {
    public:
        virtual void draw() = 0;
        ~Widget(){}
    
        /* data */
    };
    
    class TextField : public Widget
    {
    public:
        TextField(int w, int h ): width(w), height(h){}
        ~TextField();
    
        void draw()
        {
            cout << "TextField: " << width << ", " << height << endl;
        }
        /* data */
    
    private:
        int width;
        int height;
    };
    
    class Decorator : public Widget
    {
    public:
        Decorator( Widget *w )
        {
            wid = w;
        }
        ~Decorator(){
            delete wid;
        }
    
        void draw()
        {
            wid->draw();
        }
    
    private:
        Widget *wid;
        /* data */
    };
    
    class BorderDecorator : public Decorator
    {
    public:
        BorderDecorator( Widget* w ) : Decorator( w ){
    
        }
    
        ~BorderDecorator();
    
        void draw()
        {
            Decorator::draw();
            cout << "BorderDecorator" << endl;
        }
        /* data */
    };
    
    class ScrollDecorator : public Decorator
    {
    public:
        ScrollDecorator( Widget* w ) : Decorator( w ){}
        ~ScrollDecorator();
    
        void draw()
        {
            Decorator::draw();
            cout << "ScrollDecorator" << endl;
        }
        /* data */
    };
    
    int main()
    {
        Widget* aWidget = new BorderDecorator( new BorderDecorator( new ScrollDecorator( new TextField
            ( 80, 24 ) ) ) );
        aWidget->draw();
        delete aWidget;
    
        return 0;
    }
  • 相关阅读:
    Sqlserver日期函数应用
    SSRS匿名访问
    SSAS动态添加分区(一)
    BI就是报表?
    CreateEvent函数/多线程/c++
    字符编码介绍
    Win7 64下Visual C++ 6.0不兼容
    Winpcap安装,Cannot open include file 'pcap.h'
    PPT开发 * .pps 文件类型
    Visual Assist X 工具栏不显示 toolbar
  • 原文地址:https://www.cnblogs.com/bracken/p/2989636.html
Copyright © 2011-2022 走看看