进阶学习(3.12) Operand Pattern 装饰器模式

1, 什么是装饰器

1.1  装饰针对的是某一对象, 它不会改变事物的本质,  比如一个人买了一顶帽子, 它本质还是一个人
1.2  比如一个Date 对象, 它本质还是一个Object, 这个太抽象了奥, = _ =
1.3  装饰器也可以实现增强本质事物, 也可以只在表面做一些花里胡哨的事
1.4  这个模式和桥接模式不同的就是, 装饰者和被装饰者是同一个抽象
1.5  我觉得我们学习技术不一定全部都是为了面试, 还是靠注重解决问题, 更好解决我们可能遇到的问题

2, 案例

public interface Operand {void upload(String file);
}// 被装饰者
public class OperandA implements Operand{@Overridepublic void upload(String file) {System.out.println("我是OperandA, 上传文件:" + file);try {Thread.sleep(30);} catch (Exception e) {e.printStackTrace();}}
}// 装饰者
public class OperandAPlus implements Operand{private Operand operand;public OperandAPlus(Operand operand) {this.operand = operand;}@Overridepublic void upload(String file) {System.out.println("这里可以打日志, 也可以做其他的");System.out.println("操作开始时间" + System.currentTimeMillis());operand.upload(file);System.out.println("操作结束时间" + System.currentTimeMillis());}
}public class Main {public static void main(String[] args) {Operand operand = new OperandAPlus(new OperandA());operand.upload("a.png");}
}//===================================
这里可以打日志, 也可以做其他的
操作开始时间1599184513041
我是OperandA, 上传文件:a.png
操作结束时间1599184513073Process finished with exit code 0

 

《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

Published by

风君子

独自遨游何稽首 揭天掀地慰生平