From 7757a72122e98c7e39a47f2e9e35f6784c5456b4 Mon Sep 17 00:00:00 2001 From: Bunny <1319900154@qq.com> Date: Tue, 4 Feb 2025 18:59:15 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BB=A3=E7=90=86=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../设计模式-v2/image-20250204185312828.png | Bin 0 -> 6845 bytes .../设计模式-v2/image-20250204185852710.png | Bin 0 -> 15735 bytes README/设计模式-v2.md | 95 +++++++++++++++++- .../main/java/cn/bunny/pattern17/Proxy.java | 71 +++++++++++++ 4 files changed, 165 insertions(+), 1 deletion(-) create mode 100644 README/images/设计模式-v2/image-20250204185312828.png create mode 100644 README/images/设计模式-v2/image-20250204185852710.png create mode 100644 pattern/src/main/java/cn/bunny/pattern17/Proxy.java diff --git a/README/images/设计模式-v2/image-20250204185312828.png b/README/images/设计模式-v2/image-20250204185312828.png new file mode 100644 index 0000000000000000000000000000000000000000..79341b41412fd9565eece31d8522b464229514a2 GIT binary patch literal 6845 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