(07)装饰模式

概念

装饰模式使用在不改变对象原有的功能基础上,对原有的功能进行增强。

例如:一个机器人只会扫地,我希望机器人在扫地的同时,它还能够唱歌。这种场景就很适合装饰模式,在不改变原有的功能基础上,对原有的功能增强

前提:装饰类与被装饰类都实现相同的接口。装饰类中有一个构造方法,构造方法中需要传入被装饰类。这样装饰类就可以使用被装饰类的功能,也可以对被装饰类的功能增强

实现方式

/**
 * 装饰器
 */
public class Demo {
    public static void main(String[] args) {
        Robot robotImpl = new RobotImpl();
        RobotDecorator robotDecorator = new RobotDecorator(robotImpl);
        robotDecorator.sweepSuper();
    }
}

// 机器人共同的接口
interface Robot {
    public void sweep();
}

// 具体的机器人(被装饰类)
class RobotImpl implements Robot {
    public void sweep() {
        System.out.println("我会扫地");
    }
}

// 装饰类,需要和被装饰类实现共同接口,需要具有被装饰类的所有功能
class RobotDecorator implements Robot {
    Robot robot;

    public RobotDecorator(Robot robot) {
        this.robot = robot;
    }

    public void sweep() {
        robot.sweep();
    }

    public void sweepSuper() {
        sweep();
        System.out.println("我不仅会扫地,我还会唱歌");
    }
}

我会扫地
我不仅会扫地,我还会唱歌

posted @ 2021-11-22 09:57  、嘎路的米。  阅读(31)  评论(0)    收藏  举报