装饰模式有点类似于责任链,但是还是有区别,直接上代码 然后运行下 自己体会,

这是文件构成 总计 5个 外加一个 运行实体类 Factory
一 AbstractDecorator 类
public class AbstractDecorator extends GatewayComponent {
private GatewayComponent gatewayComponent;
public AbstractDecorator(GatewayComponent gatewayComponent) {
this.gatewayComponent = gatewayComponent;
}
二 BasicComponentGateway 类
public class BasicComponentGateway extends GatewayComponent {
@Override
public void service() {
System.out.println("第一步>>> 网关中获取基本操作...实现");
}
}
@Override
public void service() {
if (null != gatewayComponent)
gatewayComponent.service();
}
}
三 GatewayComponent 类
public abstract class GatewayComponent {
public abstract void service();
}
四 LimitDecoratory 类
public class LimitDecoratory extends AbstractDecorator{
public LimitDecoratory(GatewayComponent gatewayComponent) {
super(gatewayComponent);
}
@Override
public void service() {
super.service();
System.out.println("第三步>> 网关限制APi接口");
}
}
五 LogDecorator 类
public class LogDecorator extends AbstractDecorator {
public LogDecorator(GatewayComponent gatewayComponent) {
super(gatewayComponent);
}
@Override
public void service() {
super.service();
System.out.println("第二步>>>日志的收集");
}
}
六 运行类 Factory
public class Factory {
public static GatewayComponent getGatewayComponent() {
// BasicComponentGateway basicComponentGateway = new BasicComponentGateway();
// LogDecorator logDecorator = new LogDecorator(basicComponentGateway);
// LimitDecoratory limitDecoratory = new LimitDecoratory(logDecorator);
return new LimitDecoratory(new LogDecorator(new BasicComponentGateway()));
}
public static void main(String[] args) {
LimitDecoratory a = (LimitDecoratory) Factory.getGatewayComponent();
a.service();
}
}
下边 是运行结果

来源:CSDN
作者:成长之旅
链接:https://blog.csdn.net/weixin_39831786/article/details/103471832