装饰者设计模式

概念

在不改变原有类的继承关系的情况下,动态的扩展对象的一个额外的功能。
简单理解:给原来的类,增加一些功能。
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();
    }
}

上一篇:227. 基本计算器 II


下一篇:Openstack 常用命令