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

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

一、练习题

1. 为销售管理系统里的客户类(Customer)实现克隆方法,该类里面包含了客户姓名和客户的地址(Address),分别用浅克隆和深克隆实现,并解释浅克隆和深克隆的区别。

类图

核心代码

package DesignPattern.prototype // 抽象原型 public abstract class Property { public func clone(): Property } public class Address { public var name: String public init (name: String) { this.name = name } } // 具体原型 public class Customer <: Property { public Customer(public var name: String, public var address: Address){} public func getInfo() { println("姓名: ${name}, 地址: ${address.name}") } public override func clone() { return Customer(name, address) } }

测试代码

package DesignPattern import DesignPattern.prototype.* main(): Int64 { let customer1 = Customer("小余", Address("翻斗花园")) customer1.getInfo() // 浅克隆 println("\n浅克隆") let customer2 = customer1 customer2.name = "小李" customer2.address = Address("水帘洞") customer1.getInfo() customer2.getInfo() // 深克隆 println("\n深克隆") let customer3 = customer1.clone() customer3.name = "小刘" customer3.address = Address("汤臣一品") customer1.getInfo() customer2.getInfo() customer3.getInfo() return 0 }

区别:浅克隆只会复制值类型数据,引用类型不会复制,深克隆无论是值类型还是引用类型,都会复制一份给克隆对象。

二、小结

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

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

相关文章:

  • 你的STM32项目复位不可靠?可能是忽略了这3个电容的细节(附选型指南)
  • 告别‘php不是命令’:用PHPStudy一键配置环境变量的隐藏技巧与原理
  • 如何用Dify工作流模板快速构建专业级AI应用?实战方法揭秘
  • 全程用 AI 做一款商业级手游 · EP9 收尾与复盘:做到了哪,没做到哪,边界在哪
  • 2026河北混合型塑胶跑道专业服务商排行及能力解析:河北预制型塑胶跑道/硅pu学校篮球场/硅pu排球场/硅pu材料/选择指南 - 优质品牌商家
  • 排查SNMP Trap收不到?手把手教你用Wireshark和MIB Browser定位问题(附端口占用解决)
  • 珠海余生黄金回收:全国连锁黄金回收测评 - 润富黄金回收
  • 别再让亚稳态坑你!FPGA跨时钟域(CDC)单bit信号处理的3个实战避坑指南
  • 2026年喷雾干燥机技术解析与靠谱品牌实测对比:旋转闪蒸烘干机/桨叶干燥机/气流烘干机/流化床干燥机/滚筒刮板烘干机/选择指南 - 优质品牌商家
  • 济南余生黄金回收历下区旗舰店 - 润富黄金回收
  • 告别内存焦虑:手把手教你用STM32H7的FMC外扩SDRAM(含CubeMX配置)
  • 2026年高强度水泥电杆技术解析与主流供应商盘点:水泥杆、水泥电杆卡盘、水泥电杆底盘、水泥电线杆三盘、水泥电线杆卡盘选择指南 - 优质品牌商家
  • Windows 10下PyInstaller打包闪退?别慌,可能是Tcl/Tk在捣鬼(附保姆级修复教程)
  • 生产级机器学习系统:从模型部署到合规治理的全链路实践
  • 如何快速获取网易云QQ音乐LRC歌词:3步搞定歌词下载与批量处理
  • Java TCP双人在线五子棋实战项目:含可运行客户端/服务端源码与课程设计报告
  • 2026低压水泥电线杆靠谱供应商:水泥电线杆底盘、水泥电线杆拉盘、水泥电线杆配件、电力工程水泥电线杆、线路改造水泥电线杆选择指南 - 优质品牌商家
  • CouchApp部署实战:从本地开发到生产环境的完整部署策略
  • 从“接话“到“行动“:揭秘 Agent = LLM + Harness 的爆能奥秘!
  • 免费离线OCR软件终极指南:3步掌握Umi-OCR高效文字识别
  • 佛山千鸿黄金回收全城上门服务评测 - 润富黄金回收
  • 别再让网卡拖慢你的服务器!手把手教你调优RPS/RFS,实测CPU负载下降30%
  • Mermaid Live Editor终极指南:免费实时图表编辑器完全解析
  • OBS Studio:为什么这款免费开源软件成为专业直播的终极选择?
  • Rack::Cache高级技巧:如何自定义缓存键生成与查询参数忽略策略提升性能
  • 中山黄金回收实测:6大门店横向对比(附地址与变现避坑指南) - 润富黄金回收
  • 实战避坑:在FusionCompute 8.0上配置虚拟机高可用与DRS的完整流程
  • SeetaFaceEngine2 Android开发实战:移动端人脸识别应用开发指南
  • Ruby开发者必学:RhizomeRuby的寄存器分配与指令调度算法
  • 3步实现QQ音乐加密格式转换:qmc-decoder完整实战指南