码迷,mamicode.com
首页 > 其他好文 > 详细

装饰模式

时间:2020-02-19 05:53:19      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:extends   ref   tin   int   定义   end   ide   sys   简单   

个人博客

http://www.milovetingting.cn

装饰模式

模式介绍

装饰模式也称为包装模式,结构型设计模式之一,其使用一种对客户端透明的方式来动态地扩展对象的功能,同时它也是继承关系的一种替代方案之一。

模式定义

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

使用场景

需要透明且动态地扩展类的功能时。

简单使用

定义Component

public abstract class Component {

    public abstract void operate();

}

定义具体的Component

public class ConcreteComponent extends Component {

    @Override
    public void operate() {
        System.out.println("ConcreteComponent operate");
    }

}

定义Decorator

public abstract class Decorator extends Component {

    private Component component;

    public Decorator(Component component) {
        super();
        this.component = component;
    }

    @Override
    public void operate() {
        component.operate();
    }

}

定义具体的Decorator

public class ConcreteDecorator extends Decorator {

    public ConcreteDecorator(Component component) {
        super(component);
    }

    @Override
    public void operate() {
        operateA();
        super.operate();
        operateB();
    }

    public void operateA() {
        System.out.println("operateA");
    }

    public void operateB() {
        System.out.println("operateB");
    }

}

调用

public class Main {

    public static void main(String[] args) {
        Component component = new ConcreteComponent();
        Decorator decorator = new ConcreteDecorator(component);
        decorator.operate();
    }

}

输出结果

operateA
ConcreteComponent operate
operateB

装饰模式

标签:extends   ref   tin   int   定义   end   ide   sys   简单   

原文地址:https://www.cnblogs.com/milovetingting/p/12329519.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!