概念
在不改变原有类的继承关系的情况下,动态的扩展对象的一个额外的功能。
简单理解:给原来的类,增加一些功能。
package demo8_装饰者设计模式;
/*
* 实现装饰者设计模式的步骤
* 1. 装饰类和被装饰类必须实现相同的接口
* 2. 在装饰类中必须传入被装饰类的引用
* 3. 在装饰类中对需要扩展的方法进行扩展
* 4. 在装饰类中对不需要扩展的方法调用被装饰类中的同名方法
*
* 下面案例的步骤:
* 1. 编写一个LiuDeHuaWarpper类, 实现Star接口,重写抽象方法
* 2. 提供LiuDeHuaWarpper类的有参构造, 传入LiuDeHua类对象
* 3. 在LiuDeHuaWarpper类中对需要增强的sing方法进行增强
* 4. 在LiuDeHuaWarpper类对不需要增强的方法调用LiuDeHua类中的同名方法
*
* */
interface start {
public void sing();
public void dance();
}
class liudehua implements start {
@Override
public void sing() {
System.out.println("刘德华在喝忘情水");
}
@Override
public void dance() {
System.out.println("刘德华喝醉了在走S步");
}
}
class mingx implements start {
liudehua ldh;
public mingx(liudehua ldh) {
this.ldh = ldh;
}
@Override
public void sing() { //增强
System.out.println("增强的代码");
ldh.sing();
}
@Override
public void dance() { //不需要增强
ldh.dance();
}
}
public class demo1 {
public static void main(String[] args) {
//目的增强mingx这个类的 sing方法。
liudehua a = new liudehua();
mingx x = new mingx(a);
x.dance();
x.sing();
}
}