装饰器模式-Decorator Pattern

  • 允许向一个现有的对象添加新的功能,同时又不改变其结构
  • 创建一个装饰类,包装原有的类,并在保持类方法签名完整性的前提下,提供额外功能
  • 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活
  • 装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能
  • 继承加组合
- 静态代理和装饰者模式的实现过程本质上没什么区别
- 装饰者模式只是为了增强原对象的方法;而代理模式主要是为了控制对象的访问
package com.nike.erick.decorator;

public class Test {
    public static void main(String[] args) {
        BigDog bigDog = new BigDog(new Dog());
        bigDog.eat();
    }
}

interface Animal {
    void eat();
}

/* 被装饰类*/
class Dog implements Animal {

    @Override
    public void eat() {
        System.out.println("狗吃肉");
    }
}


/*装饰类*/
class BigDog implements Animal {
    private Dog dog;

    public BigDog(Dog dog) {
        this.dog = dog;
    }

    @Override
    public void eat() {
        beforeEat();
        dog.eat();
    }

    private void beforeEat() {
        System.out.println("先给狗狗洗个澡");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值