From d163de61ee46f04f359ca8d310063a23b5d45345 Mon Sep 17 00:00:00 2001 From: ctexthuang Date: Sun, 7 Sep 2025 00:05:45 +0800 Subject: [PATCH] feat : Document --- document/adapter.md | 36 ++++++++++++++++++++++++++++++ document/decorator.md | 52 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 document/adapter.md create mode 100644 document/decorator.md diff --git a/document/adapter.md b/document/adapter.md new file mode 100644 index 0000000..ed43a9e --- /dev/null +++ b/document/adapter.md @@ -0,0 +1,36 @@ + + +### 适配器模式 (Adapter Pattern) 详解 + +> 适配器模式是一种结构型设计模式,它允许不兼容的接口之间能够协同工作。就像现实世界中的电源适配器可以让不同国家标准的插头工作一样,软件中的适配器模式充当两个不兼容接口之间的桥梁。 + +#### 核心概念 + +适配器模式主要解决以下问题: + +- 当需要使用现有类,但其接口与你的需求不匹配时 +- 当你想创建一个可复用的类,该类可以与不相关或不可预见的类协同工作 +- 当你想使用几个现有的子类,但通过子类化每个子类来调整它们的接口是不切实际的 + +#### 应用场景 + +适配器模式的典型应用场景包括: + +- 系统集成:将新系统与旧系统集成时,需要让旧系统的接口与新系统兼容 +- 第三方库适配:当使用第三方库时,其接口与你的应用不匹配 +- 接口标准化:统一多个类的接口,使它们可以以相同的方式被使用 +- 测试驱动开发:创建测试替身(Test Double)来模拟真实对象 + +#### 优缺点 + +##### 优点 +- 提高了类的复用性 +- 增加了类的透明度 +- 灵活性好 +- 符合开闭原则(对扩展开放,对修改关闭) + +##### 缺点 +- 过多使用适配器会使系统变得凌乱 +- 在某些语言中(如Java)只能适配一个类,不能适配多个类 + +适配器模式是一种非常实用的设计模式,在系统集成和重构过程中经常使用,能够有效地解决接口不兼容的问题。 \ No newline at end of file diff --git a/document/decorator.md b/document/decorator.md new file mode 100644 index 0000000..2f0fe76 --- /dev/null +++ b/document/decorator.md @@ -0,0 +1,52 @@ + + +### 装饰器模式 (Decorator Pattern) 详解 + +> 装饰器模式是一种结构型设计模式,它允许向一个现有的对象动态地添加新的功能,同时不改变其结构。这种模式创建了一个装饰类,用来包装原有的类,提供了比继承更有弹性的替代方案。 + +#### 核心概念 + +装饰器模式主要解决以下问题: + +- 需要动态扩展一个对象的功能,而不影响其他对象 +- 当继承不适合或不可行时(如需要大量子类或final类) +- 需要运行时添加或撤销功能 + +#### 实现方式 + +装饰器模式通常包含以下角色: + +- Component(抽象组件):定义对象接口,可以动态添加职责 +- ConcreteComponent(具体组件):定义具体对象 +- Decorator(抽象装饰类):继承/实现Component,并持有Component引用 +- ConcreteDecorator(具体装饰类):向组件添加具体职责 + +#### 应用场景 + +装饰器模式的典型应用场景包括: + +- GUI组件:动态添加滚动条、边框等功能 +- I/O流处理:Java中的BufferedReader、ZipInputStream等 +- Web开发:中间件装饰HTTP请求/响应对象 +- 游戏开发:动态添加角色装备或技能 +- 权限控制:动态添加权限检查 + + +#### 优缺点 + +##### 优点 +- 比继承更灵活(可以在运行时添加或移除功能) +- 避免子类爆炸问题 +- 符合开闭原则(对扩展开放,对修改关闭) +- 可以嵌套多个装饰器 + +##### 缺点 +- 会产生许多小对象,增加系统复杂性 +- 装饰器与组件接口必须一致,限制了灵活性 +- 调试困难(多层装饰时不易识别) + +装饰器模式在Java标准库中有广泛应用,特别是I/O流处理部分(如BufferedInputStream装饰FileInputStream)。理解这种模式有助于编写更灵活、更易扩展的代码。 + +#### tips +`App\Service\Test\Decorator\ContainerService` +`App\Aspect\Test\Decorator\Aop\CacheableAspect` \ No newline at end of file