装饰器主要解决的是直接继承时因功能的不断横向扩展导致子类膨胀的问题,而使用装饰器模式比直接继承更加灵活,同时也不再需要维护子类。
    在装饰器模式中,有四点比较重要:
    ·抽象构件角色(Component):定义抽象接口;
    ·具体构件角色(ConcreteComponent):实现抽象接口,可以是一组;
    ·装饰角色(Decorator):定义抽象类并继承接口中的方法,保证一致性;
    ·具体装饰角色(ConcreteDecorator):扩展装饰具体的实现逻辑。