装饰器模式


import org.junit.Test;

/**
 * 装饰设计模式
 * 1.动态的给一个对象添加一些额外的功能,就增加功能来说比生成个子类更灵活
 * 2.在不必更改原类文件和使用继承的情况下,动态添加一个对象的功能
 * 3.它就是创建一个包装对象,也就是使用装饰来包裹真实对象
 * <p>
 * 适用性:
 * 1.需要扩展一个类的功能时
 * 2.单不能使用子类来实现时,比如final类
 * <p>
 * 实现方式:
 * 1.装饰对象和真实对象有相同的接口
 * 2.装饰对象包含真实对象的引用
 * 3.装饰对象的所有方法,内部实现都是通过真实对象的引用来调用的
 */
public class Demo03 {
    @Test
    public void test1() {
//      装饰对象                                        真实类
        WJStudent wjStudent = new WJStudent(new UniversityStudent());
        wjStudent.code();
    }
}

/**
 * 公共接口
 */
interface Person {
    void code();
}

//真实对象
final class UniversityStudent implements Person {
    @Override
    public void code() {
        System.out.println("真实对象的方法");
    }
}

//装饰类
class WJStudent implements Person {
    
    private UniversityStudent universityStudent;

    WJStudent(UniversityStudent universityStudent) {
        this.universityStudent = universityStudent;
    }

    @Override
    public void code() {
//        调用真实对象的方法
        universityStudent.code();
        System.out.println("装饰器增强的功能");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值