**View**:ConsoleView(ANSI常量)
**Command接口**+实现
**Controller**:Map路由 | **教师演示**:分步写出代码,刻意埋入1~2个"越权细节"让学生找茬 | 学生用AI做"架构审计" | +| **7. 架构反思与展望** | 5' | 指出当前`List
1. 策略模式(Strategy Pattern)解耦情况 ✅
+接口抽象清晰:CrawlStrategy 定义了统一的爬取接口,包含 supports(String url) 和 crawl(String url) 两个核心方法,所有网站爬取逻辑都实现了该接口。
+具体实现解耦:
+CsdnCrawlStrategy、JuejinCrawlStrategy 完全独立,各自封装了网站匹配和模拟爬取逻辑。
+新增网站爬取策略时,只需新增一个实现类并在 StrategyFactory 中注册,无需修改任何旧代码,严格遵循开闭原则。
+高层依赖抽象:CrawlCommand、AnalyzeCommand 仅依赖 CrawlStrategy 接口,不依赖任何具体实现类,实现了依赖倒置。
+ +2. 工厂模式(Factory Pattern)职责单一 ✅
+StrategyFactory 负责所有策略的注册与分发,集中管理策略匹配逻辑。
+通过 getStrategy(String url) 方法,根据 URL 自动匹配对应策略,命令类无需关心策略的创建与匹配细节。
+ +3. 仓库模式(Repository Pattern)封装与数据安全 ✅
+数据封装严格:ArticleRepository 内部持有私有 List<Article>,外部无法直接访问和修改,所有数据操作必须通过其提供的方法进行。
+数据安全防护:
+addAll 方法实现了双层 null 防御:判空 / 空集合直接返回 + 过滤集合内 null 元素,避免空指针异常。
+getAll() 返回 Collections.unmodifiableList() 不可修改视图,防止外部篡改内部数据。
\ No newline at end of file diff --git a/W10/策略模式类结构检查.docx b/W10/策略模式类结构检查.docx deleted file mode 100644 index 256ee9b..0000000 Binary files a/W10/策略模式类结构检查.docx and /dev/null differ