在不改变目标结构的情况下,动态的给对象增加功能
如房子装修、相片加相框等,都是装饰器模式。
package com.lglbc.decorator;
/**
* @author: 乐哥聊编程(全平台同号)
* @date: 2022/5/22
*/
public interface Component {
public void execute();
}
package com.lglbc.decorator;
/**
* @author: 乐哥聊编程(全平台同号)
* @date: 2022/5/22
*/
public class ConcreteComponent implements Component{
@Override
public void execute() {
System.out.println("开始执行原始操作...");
}
}
package com.lglbc.decorator;
/**
* @author: 乐哥聊编程(全平台同号)
* @date: 2022/5/22
*/
public abstract class Decorator implements Component{
private Component component;
public Decorator(Component component) {
this.component = component;
}
@Override
public void execute() {
component.execute();
}
}
package com.lglbc.decorator;
/**
* @author: 乐哥聊编程(全平台同号)
* @date: 2022/5/22
*/
public class DecoratorA extends Decorator{
public DecoratorA(Component component) {
super(component);
}
@Override
public void execute() {
addExcExecute();
super.execute();
}
public void addExcExecute(){
System.out.println("对方法进行装饰处理");
}
}
package com.lglbc.decorator;
/**
* @author: 乐哥聊编程(全平台同号)
* @date: 2022/5/22
*/
public class Main {
public static void main(String[] args) {
Component component = new DecoratorA(new ConcreteComponent());
component.execute();
}
}
成长心路 | 优质书单 | 面试资料
牛人故事 | 前沿技术 | 视频教程