装饰器模式
装饰器模式
动态地给类添加一些额外的功能,就增加功能来说,装饰器模式比起直接继承更加灵活。
思想
采用组合的方式,避免继承的方式
角色
被装饰的接口
装饰器需要实现的接口,并且装饰器类需要把这个接口的一个实现类作为成员变量传入
装饰器类
装饰器类一般设置为抽象类,方便扩展
装饰器类的子类
类图
核心代码
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();
}
}