From 4fcf478a2948439c9d94611669b2f636b0432ebe Mon Sep 17 00:00:00 2001 From: Wangyifei <935057973@qq.com> Date: Thu, 7 May 2026 15:47:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84Article=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git push git commit -m 完善Article“ --- w9/AI架构审计.txt | 26 +++++++++++++++ w9/Article.java | 65 ++++++++++++++++++++++++++++++++++++++ w9/CommandController.java | 17 ++++++++++ w9/CommandParser.java | 18 +++++++++++ w9/ConsoleView.java | 12 +++++++ w9/CrawlController.java | 14 ++++++++ w9/HistoryCommand.java | 27 ++++++++++++++++ w9/Main.java | 29 +++++++++++++++++ w9/UrlValidator.java | 18 +++++++++++ w9/ViewConstants.java | 9 ++++++ w9/思考题.txt | 5 +++ w9/运行输出.jpg | Bin 0 -> 79791 bytes 12 files changed, 240 insertions(+) create mode 100644 w9/AI架构审计.txt create mode 100644 w9/Article.java create mode 100644 w9/CommandController.java create mode 100644 w9/CommandParser.java create mode 100644 w9/ConsoleView.java create mode 100644 w9/CrawlController.java create mode 100644 w9/HistoryCommand.java create mode 100644 w9/Main.java create mode 100644 w9/UrlValidator.java create mode 100644 w9/ViewConstants.java create mode 100644 w9/思考题.txt create mode 100644 w9/运行输出.jpg diff --git a/w9/AI架构审计.txt b/w9/AI架构审计.txt new file mode 100644 index 0000000..78d9b84 --- /dev/null +++ b/w9/AI架构审计.txt @@ -0,0 +1,26 @@ +指令:作为Java架构审计师,请检查以下MVC三层划分是否存在越权行为: +1. 模型层:Article(包含标题、内容、作者、发布日期字段,仅提供Getter/Setter) +2. 控制层:CommandController(处理用户命令逻辑)、HistoryCommand(记录命令历史) +3. 视图层:ConsoleView(仅负责控制台输入输出) +请分析各层职责边界是否清晰,是否存在跨层直接操作数据、越权访问等问题。 + +输出: +一、审计结论 +MVC 三层架构职责边界清晰,无跨层操作数据、越权访问等行为,仅存在一处非风险优化点。 + +二、各层合规性分析 +1.模型层(Article) +仅封装数据,提供Getter/Setter,无业务逻辑、跨层依赖,数据访问受控,合规。 +2.控制层(CommandController/HistoryCommand) +仅处理命令逻辑、记录命令历史,通过公开接口操作模型层数据,无越权接管视图层职责,合规。 +3.视图层(ConsoleView) +仅负责控制台10,无业务逻辑,通过 Getter 获取模型层数据,无越权修改行为,合规。 + +三,优化建议 (非风险) +HistoryCommand 若采用静态存储命令历史,建议改为实例成员变量,通过单例/工厂模式调用,降低耦合。 + +四、实施建议 +1.保留现有分层,视图层仅接收控制层数据,控制层作为数据交互中枢,模型层保持纯数据载 +体特性; +2.按需优化 HistoryCommand 设计; +3.迭代中校验职责边界,避免混淆。 \ No newline at end of file diff --git a/w9/Article.java b/w9/Article.java new file mode 100644 index 0000000..30a1bf2 --- /dev/null +++ b/w9/Article.java @@ -0,0 +1,65 @@ +import java.util.Date; + +/** + * 文章实体类(MVC-模型层) + */ +public class Article { + private String title; // 标题 + private String content; // 内容 + private String author; // 新增:作者 + private Date publishDate; // 新增:发布日期 + + // 全参构造器 + public Article(String title, String content, String author, Date publishDate) { + this.title = title; + this.content = content; + this.author = author; + this.publishDate = publishDate; + } + + // 空参构造器 + public Article() {} + + // Getter & Setter + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public Date getPublishDate() { + return publishDate; + } + + public void setPublishDate(Date publishDate) { + this.publishDate = publishDate; + } + + @Override + public String toString() { + return "Article{" + + "title='" + title + '\'' + + ", content='" + content + '\'' + + ", author='" + author + '\'' + + ", publishDate=" + publishDate + + '}'; + } +} \ No newline at end of file diff --git a/w9/CommandController.java b/w9/CommandController.java new file mode 100644 index 0000000..85009cc --- /dev/null +++ b/w9/CommandController.java @@ -0,0 +1,17 @@ +/** + * 命令控制类(MVC-控制层核心) + */ +public class CommandController { + public void executeCommand(String input) { + // 解析命令别名 + String realCommand = CommandParser.parseAlias(input); + + // 执行对应命令逻辑 + if ("crawl".equals(realCommand)) { + System.out.println("执行爬取操作..."); + } + + // 记录原始命令到历史 + HistoryCommand.addCommand(input); + } +} \ No newline at end of file diff --git a/w9/CommandParser.java b/w9/CommandParser.java new file mode 100644 index 0000000..4efa293 --- /dev/null +++ b/w9/CommandParser.java @@ -0,0 +1,18 @@ +/** + * 命令解析工具类(控制层-处理命令别名) + */ +public class CommandParser { + public static String parseAlias(String command) { + if (command == null) { + return null; + } + // 处理别名:c -> crawl + switch (command.trim()) { + case "c": + return "crawl"; + // 可扩展其他别名 + default: + return command.trim(); + } + } +} \ No newline at end of file diff --git a/w9/ConsoleView.java b/w9/ConsoleView.java new file mode 100644 index 0000000..f7d28d6 --- /dev/null +++ b/w9/ConsoleView.java @@ -0,0 +1,12 @@ +/** + * 控制台视图类(MVC-视图层) + */ +public class ConsoleView { + public void render() { + // 应用暗色主题常量 + System.out.println("=== 暗色主题模式 ==="); + System.out.println("背景色:" + ViewConstants.BACKGROUND_COLOR); + System.out.println("文本色:" + ViewConstants.TEXT_COLOR); + // 其他视图渲染逻辑 + } +} \ No newline at end of file diff --git a/w9/CrawlController.java b/w9/CrawlController.java new file mode 100644 index 0000000..b5f0b4c --- /dev/null +++ b/w9/CrawlController.java @@ -0,0 +1,14 @@ +/** + * 爬取控制类(MVC-控制层) + */ +public class CrawlController { + public void crawl(String url) { + // 验证URL格式 + if (!UrlValidator.isValidUrl(url)) { + System.out.println("URL格式非法:" + url); + return; + } + // 执行爬取逻辑(示例) + System.out.println("爬取URL:" + url + " 成功"); + } +} \ No newline at end of file diff --git a/w9/HistoryCommand.java b/w9/HistoryCommand.java new file mode 100644 index 0000000..8d3a8d1 --- /dev/null +++ b/w9/HistoryCommand.java @@ -0,0 +1,27 @@ +import java.util.ArrayList; +import java.util.List; + +/** + * 命令历史记录类(MVC-控制层辅助) + */ +public class HistoryCommand { + // 私有化List,避免外部直接修改 + private static final List commandList = new ArrayList<>(); + + // 新增命令记录 + public static void addCommand(String command) { + if (command != null && !command.trim().isEmpty()) { + commandList.add(command); + } + } + + // 获取所有命令记录(返回副本,避免外部修改原集合) + public static List getCommandList() { + return new ArrayList<>(commandList); + } + + // 清空命令记录 + public static void clearHistory() { + commandList.clear(); + } +} \ No newline at end of file diff --git a/w9/Main.java b/w9/Main.java new file mode 100644 index 0000000..7ee3964 --- /dev/null +++ b/w9/Main.java @@ -0,0 +1,29 @@ +import java.util.Date; +import java.util.List; + +/** + * 程序主入口(测试所有功能) + */ +public class Main { + public static void main(String[] args) { + // 1. 测试Article扩展字段 + Article article = new Article("Java MVC", "MVC分层设计", "张三", new Date()); + System.out.println("Article信息:" + article); + + // 2. 测试命令别名+历史记录 + CommandController cmdController = new CommandController(); + cmdController.executeCommand("c"); // 别名c -> crawl + cmdController.executeCommand("crawl"); // 原始命令 + List history = HistoryCommand.getCommandList(); + System.out.println("命令历史:" + history); + + // 3. 测试URL验证 + CrawlController crawlController = new CrawlController(); + crawlController.crawl("https://www.example.com"); // 合法URL + crawlController.crawl("invalid-url"); // 非法URL + + // 4. 测试暗色主题 + ConsoleView view = new ConsoleView(); + view.render(); + } +} \ No newline at end of file diff --git a/w9/UrlValidator.java b/w9/UrlValidator.java new file mode 100644 index 0000000..06dc0a3 --- /dev/null +++ b/w9/UrlValidator.java @@ -0,0 +1,18 @@ +import java.util.regex.Pattern; + +/** + * URL验证工具类(工具层) + */ +public class UrlValidator { + // URL正则表达式(简化版,适配http/https/ftp) + private static final String URL_REGEX = "^(https?|ftp)://[a-zA-Z0-9.-]+(:\\d+)?(/.*)?$"; + private static final Pattern URL_PATTERN = Pattern.compile(URL_REGEX); + + // 验证URL格式 + public static boolean isValidUrl(String url) { + if (url == null || url.trim().isEmpty()) { + return false; + } + return URL_PATTERN.matcher(url.trim()).matches(); + } +} \ No newline at end of file diff --git a/w9/ViewConstants.java b/w9/ViewConstants.java new file mode 100644 index 0000000..07541b9 --- /dev/null +++ b/w9/ViewConstants.java @@ -0,0 +1,9 @@ +/** + * 视图层常量(配置暗色主题) + */ +public class ViewConstants { + // 暗色主题:黑色背景(仅修改此常量完成暗色主题配置) + public static final String BACKGROUND_COLOR = "BLACK"; + // 文本颜色适配暗色主题 + public static final String TEXT_COLOR = "WHITE"; +} \ No newline at end of file diff --git a/w9/思考题.txt b/w9/思考题.txt new file mode 100644 index 0000000..70d54b9 --- /dev/null +++ b/w9/思考题.txt @@ -0,0 +1,5 @@ +List
共享引用的核心风险是多模块无控修改: +多个层(视图 / 控制层)持有同一 List 引用时,任意模块可直接修改集合(add/remove)或通过 Article 的 Setter 修改元素属性,破坏数据一致性(如视图层误删控制层待处理的文章)。 +其次是并发安全问题,无同步机制的共享 List 在多线程下会引发 ConcurrentModificationException,或脏读 / 脏写。 +此外,共享引用易导致内存泄漏,所有持有引用的模块会阻止 List 被 GC 回收。 +最后,该行为违背 MVC 分层原则:视图层仅负责展示,若直接操作共享 List,会模糊职责边界,破坏架构分层的可维护性和扩展性。 diff --git a/w9/运行输出.jpg b/w9/运行输出.jpg new file mode 100644 index 0000000000000000000000000000000000000000..96edfcf5600fb3039239b675f999940648599e78 GIT binary patch literal 79791 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