简单了解一下装饰器设计模式

装饰器设计模式

装饰(Decorator)模式的主要优点有:

  • 采用装饰模式扩展对象的功能比采用继承方式更加灵活。
  • 可以设计出多个不同的具体装饰类,创造出多个不同行为的组合。
  • img

组成:

  1. 抽象组件:需要装饰的抽象接口(接口或抽象父类)
  2. 具体组件:需要装饰的对象
  3. 抽象装饰类:包含了对抽象组件的引用以及装饰着共有的方法
  4. 具体装饰类:被装饰的对象

关于装饰器设计模式初学者不需要深入了解

package decorator;
public class DecoratorPattern
{
    public static void main(String[] args)
{
        Component p=new ConcreteComponent();
        p.operation();
        System.out.println("---------------------------------");
        Component d=new ConcreteDecorator(p);
        d.operation();
    }
}
//抽象构件角色
interface  Component
{
    public void operation();
}
//具体构件角色
class ConcreteComponent implements Component
{
    public ConcreteComponent()
{
        System.out.println("创建具体构件角色");       
    }   
    public void operation()
{
        System.out.println("调用具体构件角色的方法operation()");           
    }
}
//抽象装饰角色
class Decorator implements Component
{
    private Component component;   
    public Decorator(Component component)
{
        this.component=component;
    }   
    public void operation()
{
        component.operation();
    }
}
//具体装饰角色
class ConcreteDecorator extends Decorator
{
    public ConcreteDecorator(Component component)
{
        super(component);
    }   
    public void operation()
{
        super.operation();
        addedFunction();
    }
    public void addedFunction()
{
        System.out.println("为具体构件角色增加额外的功能addedFunction()");           
    }
}

程序运行结果如下:

创建具体构件角色
调用具体构件角色的方法operation()
---------------------------------
调用具体构件角色的方法operation()
为具体构件角色增加额外的功能addedFunction()
发布了14 篇原创文章 · 获赞 0 · 访问量 214

猜你喜欢

转载自blog.csdn.net/qq_43721475/article/details/104216430