装饰器模式

一.装饰器模式

        允许向一个现有的对象添加新的功能,同时又不改变其结构

        加入你有一个产品,只有两个功能,现在你想让他新增功能,两种方法.

一是实现其子类,续写功能

        这是在类层级上进行扩展,是静态的

二是实现装饰器

        不改变原有逻辑,拿到对象即可进行拓展,是动态的

当然,原产品和新产品都继承同一模板

二.java代码实现

//模板接口
interface template{
    void function1();
}
//原产品
class Product implements template{
    //老功能
    @Override
    public void function1() {
        System.out.println("唱");
        System.out.println("跳");
    }
}
//升级后的产品
class ProductPuls implements template{
    //拿到原产品对象
    template product_min ;
    ProductPuls(template product_min){
        this.product_min = product_min;
    }
    @Override
    public void function1() {
        product_min.function1();
    }
    //新功能
    public void function2(){
        System.out.println("rap");
        System.out.println("篮球");
    }
}

测试

    public static void main(String[] args) {
        template product_min = new ProductPuls(new Product());
        product_min.function1();
        ((ProductPuls) product_min).function2();
    }

这个构造方式是不是和java的IO有点像,没错,JOK中IO用了大量的装饰器模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值