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("装饰器增强的功能");
}
}
装饰器模式
最新推荐文章于 2024-11-03 20:53:07 发布