• 装饰模式


    装饰模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活.

    Component定义一个对象接口,可以给这些对象动态的添加职责。ConcreteComponent是定义了一个具体的对象,也可以给这个对象添加一些职责。Decorator,装饰抽象类,继承了Component,从外类来扩展Component类的功能,但是对于Component来说,是无需知道Decorator的存在的.至于ConcreteDecorator就是具体的装饰对象,起到给Component添加职责的功能.

    #pragma once
    //ConcreteComponent
    #include<iostream>
    #include<string>
    using namespace std;
    class Person
    {
    public:
        Person(){}
        Person(string lhs):name(lhs){}
        ~Person(void);
        virtual void Show()
        {
            cout<<"装扮的:"<<name<<endl;
        }
    private:
        string name;
    
    };
    #pragma once
    #include "person.h"
    class CFinery :    public Person
    {
    public:
        void Decorate(Person *components)
        {
            component = components;
        }
        virtual void Show()
        {
            component->Show();
        }
    protected:
        Person *component;
    };
    #pragma once
    #include "finery.h"
    class BigTrouser :
        public CFinery
    {
    public:
        virtual void Show()
        {
            cout<<"大裤衩"<<endl;
            CFinery::Show();
        }
    
    };
    #pragma once
    #include "finery.h"
    class Tshirts :
        public CFinery
    {
    public:
        Tshirts(void);
        ~Tshirts(void);
        virtual void Show()
        {
            cout<<"大Tshirt"<<endl;
            CFinery::Show();
        }
    };

    总结:装饰模式是为已有的功能动态地添加更多功能的一种方式.这种模式把每个要装饰的功能放在单独的类中,并让这个类包装它所要装饰的对象,因此,当需要执行特殊行为时,客户代码就可以在运行时候根据需要有选择的,有顺序的使用装饰功能包装对象了.

  • 相关阅读:
    第 6 章 Android SDK 版本与兼容
    第 5 章 第二个 activity
    第 4 章 Android 应用的调试
    第 3 章 Activity 的生命周期
    第 2 章 Android 与 MVC 设计模式
    第 1 章 Android 应用初体验
    ACM基础之线性结构:一刷 参考答案
    小马慢慢跑
    Ubuntu 利用 xinetd 限制 SSH 连接数
    C# 定制 Attribute 简单使用
  • 原文地址:https://www.cnblogs.com/crazycodehzp/p/3710574.html
Copyright © 2020-2023  润新知