当前位置: 首页 > news >正文

跟我一起学“仓颉”设计模式-组合模式练习题

一、练习题

1. 使用组合模式模拟杀毒软件,可以对文件夹下的子文件和子文件夹进行杀毒。

类图

核心代码

package DesignPattern.composite import std.collection.* // 抽象构件类 public abstract class File { public func kill(): Unit } // 容器构件类 public class Folder <: File { private let files: ArrayList<File> = ArrayList<File>() public Folder(private let name: String) {} public override func kill() { println("正在查杀 ${this.name} 文件夹下的病毒") for (file in files) { file.kill() } } public func add(file: File) { this.files.add(file) } public func getChild(index: Int64): File { return this.files[index] } } // 叶子构件类 public class TextFile <: File{ public TextFile(private let name: String) {} public override func kill() { println("查杀 ${this.name} 文件的病毒中") } } public class ImageFile <: File{ public ImageFile(private let name: String) {} public override func kill() { println("查杀 ${this.name} 文件的病毒中") } }

测试代码

package DesignPattern import DesignPattern.composite.* main(): Int64 { let folder = Folder("学习资料") folder.add(TextFile("仓颉编程语言.docx")) folder.add(ImageFile("仓颉设计模式.pdf")) folder.add(TextFile("ArkTS从入门到出口.docx")) let folder2 = Folder("不可告人的秘密") folder2.add(TextFile("仓颉中不可告人的秘密.docx")) folder2.add(ImageFile("你绝对想象不到的鸿蒙真面目.pdf")) folder.add(folder2) folder.kill() return 0 }

二、小结

本章为大家详细的介绍了仓颉设计模式中组合模式练习题的内容,下一章,为大家带来装饰模式的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉设计模式有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!

http://www.jsqmd.com/news/979141/

相关文章:

  • 3分钟上手k8s-csi-s3:从安装到使用的快速入门教程
  • MacOS系统下Charles破解实战:详细图文教程 [特殊字符]
  • 别再到处找教程了!手把手教你用Astra SDK v2.1.2在Ubuntu 18.04上跑通第一个深度图程序
  • 机器学习中的假设检验:从模型对比到线上监控的可信决策
  • 别再让神经网络‘猜平均’了:用PyTorch实现MDN搞定‘一对多’预测难题
  • 你的第一个量化分析项目:从用efinance获取茅台股票数据开始
  • Proteus仿真DS18B20温控器,从驱动到逻辑控制保姆级代码解析
  • 量子鲁棒控制理论与误差极限分析
  • AI驱动的大型代码重构:Cursor如何实现意图驱动式重构
  • YS-X4X4V2X4PGEMINI-M-S无人机Windows地面站工具包(中英双语+Google地图集成)
  • Win10/Win11系统下,用VS Code写LaTeX论文:MiKTeX安装、中文支持与PDF预览避坑全记录
  • 51单片机+Proteus超声波测距保姆级教程:从驱动编写到LCD1602显示,附完整工程文件
  • RAG、Agent、LLMwiki,一文讲透知识库5代架构演进
  • LearnVIORB架构解析:从单目到双目,视觉惯性SLAM系统的终极实现
  • 别再乱接线了!手把手教你用USB转TTL模块正确配置HC-05蓝牙(附AT指令详解)
  • 告别打印失败!OrcaSlicer-bambulab的智能支撑生成与优化技巧全解析
  • MLOps实操入门:5个文件夹+3条命令构建本地可复现闭环
  • 8K上下文窗口!Fox-1-1.6B-Instruct-v0.1长文本处理能力实测指南
  • 【Springboot毕设全套源码+文档】基于java的养生药膳食疗系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • EgoVLA——根据第一视角的人类视频中训练的VLA模型:助力家具组装等人形灵巧操作任务的攻克(利用可穿戴手部追踪)
  • 2026Q2上海ESD防静电通道闸实测评测:浙江通道闸门禁、浙江防静电门禁闸机、浙江静电检测闸机、浙江静电测试闸机选择指南 - 优质品牌商家
  • 通过复杂指令测试AI(元宝)对icef认知框架的动态加载(互联网加载)和icef动态自更新后进行分析一体化测试,案例:分析蚂蚁与真菌的共生演化机制
  • VideoFusion完整教程:10分钟掌握开源视频批量处理神器
  • 02-Hooks完全指南——03-useContext 与跨组件通信
  • LLM数据生命周期防护:面向大模型的动态DLP实践指南
  • HsMod:基于BepInEx的炉石传说深度定制框架
  • 数据社区即服务(DCaaS):数据从业者的职业加速器
  • 终极指南:用antimicrox让所有游戏都支持手柄控制的完整教程
  • 别再只配环境变量了!PyInstaller打包exe时Tcl报错的深层原因与一劳永逸的解法
  • Horos医疗影像软件完全指南:如何在Mac上免费实现专业级医学图像分析