装饰者模式
以装饰的方式,动态的增强功能;
/**
* @Author lzy
* @Date 2021.09.03 23:41
* @PC smxr
* 接口
*/
public interface Device {
void start();
void stop();
void reboot();
}
/**
* @Author lzy
* @Date 2021.09.03 23:42
* @PC smxr
* 接口实现类 具体的设备
*/
public class WiDevice implements Device{
@Override
public void start() {
System.out.println("称重设备启动...");
}
@Override
public void stop() {
System.out.println("称重设备停止...");
}
@Override
public void reboot() {
System.out.println("称重设备重启...");
}
}
/**
* @Author lzy
* @Date 2021.09.03 23:45
* @PC smxr
* 具体设备的包装类
*/
public class DecoratorDevice implements Device{
protected Device device;
public DecoratorDevice(Device device) {
this.device = device;
}
@Override
public void start() {
System.out.println("处理启动前数据...");
this.device.start();
System.out.println("处理启动后数据...");
}
@Override
public void stop() {
System.out.println("处理停止前数据...");
this.device.stop();
System.out.println("处理停止后数据...");
}
@Override
public void reboot() {
System.out.println("处理重启前数据...");
this.device.reboot();
System.out.println("处理重启前数据...");
}
}
/**
* @Author lzy
* @Date 2021.09.03 23:55
* @PC smxr
* 包装类的子类,在此可以装饰了进行链式的增强
*/
public class DecoratorDeviceE extends DecoratorDevice{
public DecoratorDeviceE(Device device) {
super(device);
}
public void starting(){
System.out.println("-----预处理--------");
super.start();
System.out.println("------预处理-------");
}
}