From e27497157c03baa19d0112f2aca254331854a4b9 Mon Sep 17 00:00:00 2001 From: Bunny <1319900154@qq.com> Date: Sat, 1 Feb 2025 19:05:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=87=8D=E5=86=99=E8=A3=85=E9=A5=B0?= =?UTF-8?q?=E8=80=85=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../设计模式-v2/image-20250201185356903.png | Bin 0 -> 25138 bytes README/设计模式-v2.md | 309 +++++++++++- README/设计模式.md | 444 ------------------ .../cn/bunny/pattern4/demo3/CameraDemo.java | 113 +++++ 4 files changed, 421 insertions(+), 445 deletions(-) create mode 100644 README/images/设计模式-v2/image-20250201185356903.png create mode 100644 pattern/src/main/java/cn/bunny/pattern4/demo3/CameraDemo.java diff --git a/README/images/设计模式-v2/image-20250201185356903.png b/README/images/设计模式-v2/image-20250201185356903.png new file mode 100644 index 0000000000000000000000000000000000000000..bc9ef8d9ba2bd21ba903a3666912367de59e7842 GIT binary patch literal 25138 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