装饰模式有点类似于责任链,但是还是有区别,直接上代码 然后运行下 自己体会,
这是文件构成 总计 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