Java-装饰模式简单学习

根据网易云课堂Java开发课程学习
- 装饰模式介绍
装饰模式以对客户透明的方式动态的给一个对象附加上更多的责任。换言之,客户并不会感到对象在装饰前后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能进行扩展(Java中的IO流就是用的这种模式)。
- 装饰模式中的角色:
1. 抽象组件(Componet)角色:给出一个抽象接口,以规范准备接收附加责任的对象。
说白了 定义一个接口
2. 具体组件(ConcreteComponent)角色:定义一个将要接收附加责任的类
实例化这个接口
3. 装饰(Decorator)角色:持有一个(Component)对象的实例,并定义一个与抽象组件一致的接口。
调用接口,实例化一个对象
4. 具体装饰(ConcreteDecorator)角色:负责给组件对象添加附加的功能。
继承Decorator,给对象添加功能。

  • 下面是简单的代码演示
    1. 定义一个接口,接口里面有一个方法。
package com.test.decorate;

public interface Component {

    public void doThingA();
}

2.实例化这个接口

package com.test.decorate;

public class ConCreateComponent implements Component {

    @Override
    public void doThingA() {
        System.out.println("do A Thing !");

    }

}

3.创建一个装饰类:

package com.test.decorate;

public class Decorator implements Component {

    private Component component = null;

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

    @Override
    public void doThingA() {
        component.doThingA();

    }

}
  1. 添加附加功能
package com.test.decorate;

public class ConCreateDecorator extends Decorator {

    public ConCreateDecorator(Component component) {
        super(component);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void doThingA() {
        super.doThingA();
        doThingB();
    }

    private void doThingB() {
        System.out.println("do B thing");
    }
}

再加一个功能:

package com.test.decorate;

public class ConCreateDecorator1 extends Decorator {

    public ConCreateDecorator1(Component component) {
        super(component);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void doThingA() {
        super.doThingA();
        doThingC();
    }

    private void doThingC() {
        System.out.println("do C thing");
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值