装饰器模式

装饰器模式

动态地给类添加一些额外的功能,就增加功能来说,装饰器模式比起直接继承更加灵活。

思想

采用组合的方式,避免继承的方式

角色

被装饰的接口

装饰器需要实现的接口,并且装饰器类需要把这个接口的一个实现类作为成员变量传入

装饰器类

装饰器类一般设置为抽象类,方便扩展

装饰器类的子类

类图

核心代码

package decorator;

/**
 * 同样需要实现Robot接口
 * 将一个robot的实现类传入,作为变量,实现方法则是调用传入变量的方法
 * 作为抽象类,方便其他类来继承,方便扩展
 */
public abstract class RobotDecorator implements Robot {

    private Robot robot;

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

    @Override
    public void work() {
        robot.work();
    }

    public abstract void doOther();
}

public class MainTest {
    public static void main(String[] args) {
        ApplicationRobot robot = new ApplicationRobot(new RobotImpl());//需要将Robot的一个实现类传入
        robot.work();
        robot.doOther();
    }
}

posted @ 2020-10-19 10:47  刃牙  阅读(98)  评论(0编辑  收藏  举报