You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
3.1 KiB
85 lines
3.1 KiB
package com.example.datacollect.strategy;
|
|
|
|
/**
|
|
* ===============================================
|
|
* 策略模式架构审计报告
|
|
* ===============================================
|
|
*
|
|
* 一、审计概述
|
|
* ----------
|
|
* 项目采用策略模式(Strategy Pattern)实现网页解析逻辑的可替换性。
|
|
* 主要涉及以下类:
|
|
* - CrawlStrategy:策略接口,定义解析器标准
|
|
* - StrategyFactory:策略工厂,负责策略选择
|
|
* - BlogStrategy:博客解析策略
|
|
* - NewsStrategy:新闻解析策略
|
|
* - HnuNewsStrategy:湖大新闻网解析策略
|
|
*
|
|
* ===============================================
|
|
*
|
|
* 二、审计结果
|
|
* ----------
|
|
*
|
|
* 【规范项】策略接口与实现类解耦
|
|
* ------------------------------------------
|
|
* 状态:✓ 符合规范
|
|
*
|
|
* 分析:
|
|
* - CrawlStrategy 接口定义了两个核心方法:parse() 和 supports()
|
|
* - 所有策略实现类(BlogStrategy、NewsStrategy、HnuNewsStrategy)都实现该接口
|
|
* - 策略实现类之间无相互依赖,符合单一职责原则
|
|
* - 新增策略只需实现接口,无需修改现有代码(开闭原则)
|
|
*
|
|
* ===============================================
|
|
*
|
|
* 【规范项】策略选择逻辑封装
|
|
* ------------------------------------------
|
|
* 状态:⚠ 部分符合,有改进空间
|
|
*
|
|
* 分析:
|
|
* - 策略选择逻辑封装在 StrategyFactory.getStrategy(url) 中
|
|
* - 选择逻辑为简单线性遍历,返回第一个匹配的策略
|
|
* - 策略注册顺序即匹配顺序(插入顺序)
|
|
*
|
|
* 问题:
|
|
* 1. 无策略优先级机制,策略注册顺序决定匹配结果
|
|
* 2. 无默认策略,当无策略匹配时返回 null,业务层需额外处理
|
|
* 3. 无法支持正则匹配等复杂匹配场景
|
|
*
|
|
* ===============================================
|
|
*
|
|
* 【规范项】策略类越权行为检查
|
|
* ------------------------------------------
|
|
* 状态:✓ 未发现越权行为
|
|
*
|
|
* 分析:
|
|
* - 所有策略实现类只依赖 Article、Document 等数据模型
|
|
* - 策略类不直接依赖 Repository 层(数据持久化)
|
|
* - 策略类不直接依赖 View 层(输出展示)
|
|
* - 策略类专注于解析逻辑,符合职责分离原则
|
|
*
|
|
* ===============================================
|
|
*
|
|
* 三、修改建议
|
|
* ----------
|
|
*
|
|
* 1. 【高优先级】引入策略优先级机制
|
|
* 建议:在 CrawlStrategy 接口中增加 getPriority() 方法,
|
|
* 或在 StrategyFactory 中支持优先级配置。
|
|
*
|
|
* 2. 【高优先级】实现默认策略
|
|
* 建议:当无策略匹配时,使用默认策略兜底,
|
|
* 避免返回 null 导致业务层 NPE 风险。
|
|
*
|
|
* 3. 【中优先级】支持正则匹配策略
|
|
* 建议:新增 RegexStrategy 类,支持基于正则表达式的 URL 匹配。
|
|
*
|
|
* 4. 【中优先级】策略冲突检测
|
|
* 建议:在 getStrategy 时检测是否存在多个策略支持同一 URL,
|
|
* 如有则记录警告日志或抛出异常。
|
|
*
|
|
* ===============================================
|
|
*/
|
|
public class StrategyArchitectureAuditReport {
|
|
// 此类仅用于承载审计报告文档注释,无实际业务逻辑
|
|
}
|