装饰器模式是在原有类的基础上动态添加新的功能,这种添加功能的方式不同于继承,它是在对象层面实现功能扩展,而不是继承的类层面,因此说装饰器模式比继承更加灵活。另外,装饰器模式属于结构型设计模式。之前讲的都是创建型设计模式。创建型可以理解为生成新的对象,而结构型可以理解为构建更大的类或类对象。
首先装饰器模式里面,最开始有一个componet构件,定义了需要实现哪些方法,而concretecomponent相当于第一代产品,而decorator可以是一个抽象类也可以不是,在里面是实现了原有的方法并动态的通过对象对功能进行扩展。
下面写了一个对于实现
package com.weikui;
public class one {
interface Robot{
void doSomeing();
}
class First implements Robot{
@Override
public void doSomeing() {
System.out.println("1");
System.out.println("2");
}
}
class RobotDecorator implements Robot{
private Robot robot;
public RobotDecorator(Robot robot){
this.robot=robot;
}
@Override
public void doSomeing() {
}
public void doMoreThing(){
robot.doSomeing();
System.out.println("3");
}
}
}