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

tech2025-06-01  10

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{ @Override public 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; } @Override public 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 操作结束时间1599184513073 Process finished with exit code 0

 

最新回复(0)