范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Golang学习数据结构和算法中文版第6篇

  《Learn Data Structures and Algorithms with Golang》作者: Bhagvan Kommadi
  享元(Flyweight)
  享元用来管理一个带有高度变化对象的状态。这个模式允许我们多个对象之间共享对象状态的公共部分,而不是共享存储它的每个对象。变化的对象数据看做外部状态,而对象状态的其余部分是内部状态。外部数据被传给享元方法且不会被存储在对象里。享元模式有助于减少整体内存使用和对象初始化开销。此模式有助于创建类之间关系和降低内存到可管理水平。
  享元对象是不可变的。值对象是一个享元模式的好例子。享元对象可以创建在单独线程模式里,确保每个值一个实例。在并发线程场景里会创建很多实例。这是基于享元对象的平等标准。
  享元模式的参与者是FlyWeight接口,ConcreteFlyWeight类,FlyWeightFactory类型和Client类:FlyWeight接口有一个方法,通过此方法flyweights可以得到外部状态和对它起作用。ConcreteFlyWeight实现FlyWeight接口来表示享元对象。FlyWeightFactory类用来创建和管理享元对象。客户端调用FlyWeightFactory得到一个享元对象。UnsharedFlyWeight有一个禁用共享功能。Client类
  让我们假设DataTransferObject是带有getId方法的接口。DataTransferObjectFactory创建一个数据传输对象通过带DTO类型参数的getDataTransferObject方法。DTO类型包括客户,员工,管理者和地址,如下代码所示://main package has examples shown // in Hands-On Data Structures and algorithms with Go book package main // importing fmt package import (   "fmt" ) //DataTransferObjectFactory struct type DataTransferObjectFactory struct {   pool map[string] DataTransferObject } //DataTransferObjectFactory class method getDataTransferObject func (factory DataTransferObjectFactory) getDataTransferObject(dtoType string) DataTransferObject {   var dto = factory.pool[dtoType]   if dto == nil {     fmt.Println("new DTO of dtoType: " + dtoType)     switch dtoType{       case "customer":         factory.pool[dtoType] = Customer{id:"1"}       case "employee":         factory.pool[dtoType] = Employee{id:"2"}       case "manager":         factory.pool[dtoType] = Manager{id:"3"}       case "address":         factory.pool[dtoType] = Address{id:"4"}     }     dto = factory.pool[dtoType]   }   return dto }
  在下面代码里,DataTransferObject接口由Customer类实现:// DataTransferObject interface type DataTransferObject interface {   getId() string } //Customer struct type Customer struct {   id string //sequence generator   name string   ssn string } // Customer class method getId func (customer Customer) getId() string {   //fmt.Println("getting customer Id")   return customer.id } //Employee struct type Employee struct {   id string   name string } //Employee class method getId func (employee Employee) getId() string {   return employee.id } //Manager struct type Manager struct {   id string   name string   dept string }
  DataTransferObject接口由Manager类实现,代码如下://Manager class method getId func (manager Manager) getId() string {   return manager.id } //Address struct type Address struct {   id string   streetLine1 string   streetLine2 string   state string   city string } //Address class method getId func (address Address) getId() string{   return address.id } //main method func main() {   var factory = DataTransferObjectFactory{make(map[string]DataTransferObject)}   var customer DataTransferObject = factory.getDataTransferObject("customer")   fmt.Println("Customer ",customer.getId())   var employee DataTransferObject = factory.getDataTransferObject("employee")   fmt.Println("Employee ",employee.getId())   var manager DataTransferObject = factory.getDataTransferObject("manager")   fmt.Println("Manager",manager.getId())   var address DataTransferObject = factory.getDataTransferObject("address")   fmt.Println("Address",address.getId()) }
  运行下面的命令:go run flyweight.go
  让我们在下一节看看私有类和代理数据模式。
  上一篇:《Golang学习数据结构和算法》中文版 第5篇

js基础面试题7180道题目71。IE和标准下有哪些兼容性的写法参考答案varevevwindow。eventdocument。documentElement。clientWidthdocument。bodyPythonNumpy库的用法这是我学些numpy时做的一些笔记,分享给大家,在CSDN上搜索相关词也可获得numpy简介NumPy是一个Python包。它代表NumericPython。它是一个由多维数组对象消息称苹果计划为AirPodsMax带来新配色在最新一期PowerOn通讯中,彭博社记者MarkGurman表示,苹果今年计划对AirPods进行两次更新。首先是新一代AirPodsPro。根据截止到目前的传闻,AirPods管你用不用,北斗专利费苹果必须上交!库克无能无力了管你用不用,北斗专利费苹果必须上交!库克无能无力了众所周知,如今我国的北斗卫星导航系统已经服务于全球各国,而我们平时所使用的手机,几乎都是支持北斗导航的,因为北斗导航并不是需要特定GoogleIO2022重磅产品提前看,居然有谷歌折叠屏手机谷歌IO是谷歌宣布大事的活动。我们只需要在5月11日找出答案。据报道将会有这些重磅产品发布PixelWatchWearOS3forall谷歌官方出的手表pixelwatch将搭载w华为问界M5怎么样?试驾发现4大亮点,感觉稳了众所周知,当下的智能汽车市场竞争异常激烈,不仅有传统车企的转型升级,还有科技企业的跨界创新,华为联合赛力斯打造的全新鸿蒙智能座舱问界M5,便是其中翘楚。那这款智能汽车怎么样呢?老Q专业机构中美菲5G城市拥有量位列全球前三位中新社上海5月10日电(记者姜煜)专业机构VIAVISolutions(VIAVI)10日发布报告5G部署现状称,中国和美国分别有356座城市和296座城市覆盖5G网络,为全球拥有神车试驾奇瑞新能源QQ冰淇淋打开新能源车型的销量榜单,位居榜首的并不是特斯拉的某款车型,而是虽然续航不怎么高,但车身小巧可爱,价格又非常亲民的五菱宏光MINIEV。不过我们今天试驾的主角并非五菱宏光MINIE标配智能驾驶辅助软件小鹏汽车调价解读由于电池原材料成本的增加,根据不完全统计,2022年以来,已经有接近20家车企官宣旗下车型涨价,涉及的车型超过了40款。5月6日,小鹏汽车也宣布了P5及P7的车型配置售价和部分权益丰田计划在印度投资6。24亿美元生产电动汽车零部件来源盖世汽车谭璇据外媒报道,丰田计划投资480亿卢比(合6。24亿美元)在印度生产电动汽车零部件,并致力于到2050年实现碳中和。5月7日,ToyotaKirloskarMotor比特币单日跌破3万关口,市值五个月蒸发超1。4万亿美元华夏时报(www。chinatimes。net。cn)记者胡金华上海报道在全球金融市场不稳定因素剧增的情况下,比特币的价格也迎来大幅调整。5月10日凌晨,比特币一度跌穿3万美元至2
比亚迪全新元Pro深圳开趴!拼搏就是深圳女孩的标签深圳这座年轻的城市,聚集着全中国最优秀的年轻人,挣钱就是潮流的标签,最火的莫过于深圳女孩。她们走在了潮流前线,同时也是推动深圳经济快速增长的动力。爱拼搏爱挣钱,是深圳女孩的共同目标选择商用洗碗机需要注意这几点事实上,关于如何购买设备,以前有提到,现在不少人还是一直在谈论它。省劳动力除渣清洗和消毒一体化,高自动化水平,无需手工初洗,大大减少劳动力。但仍有许多客户询问类似的问题,不仅是选择使用商用洗碗机的优势分析商用洗碗机普遍采用全304种材料,安全稳定,机器质量,效果好,当然价格也相对较高。在商用洗碗机的运行过程中,不要阻挡排气口,以免影响机器中的正常排气,不要用力撞击洗碗机以避免造成故商用自动洗碗机有哪些优势?当洗碗机设备清洁餐具时,要使用特定的酸性碱性液体(清洁剂和催干剂),破坏细菌繁殖的酸度条件,而清洁和漂洗的高温使碗筷本身聚热,在催干剂作用下迅速干燥,从而破坏细菌繁殖的湿度条件,这全自动洗碗机的作用很多人担心购买大件的复杂的洗碗机器回来,不知道如何操作,但自动洗碗机操作简单,只是简单的按钮,可选择清洁模式,然后切换机器的按钮,操作完成后,不要需要盯着机器,它就会自动地清洗并消商用洗碗机的结构原理及特点商用洗碗机中使用的特殊洗涤剂对各种细菌来说有一种很好的抑制作用。商用洗碗机从除渣清洗到干燥消毒,并根据日常清洁量选用相应规格的洗碗机,这不仅大大降低了劳动力成本和设备成本。如果先前酒店自动洗碗机的选择技巧洗碗工作复杂繁琐?洗碗工难招?餐具损坏多?为了解决这种痛苦,研制了洗碗机,可以供餐饮机构选择。经过几年的研发后,一款智能自动洗碗机终于得到了世界的一致承认,它不仅便宜,而且完全可靠商用自动洗碗机的特点自动洗碗机是否好用,则必须从不同的角度判断。如方便程度,价格是否符合大多数消费者要求,它是否方便安装。今天,简要介绍了洗碗机的价格和性能。自动洗碗机方便吗?自动洗碗机通常具有自动清超声波洗碗机和喷淋洗碗机的特点自洗碗机的诞生以来,人们已经完全从复杂的洗碗工作中解放出来,因此酒店不必雇用太多洗碗工,这可以保证餐具的卫生,带来更健康的餐饮环境,并减少支出。超声波洗碗机采用超声波清洗原理。当超性能加料影像再升级,一加9RT体验评测一加在2021年上半年发布了一加9系列后,同时也发布了针对细分市场推出了一加9R系列。踏入下半年,令人意外的是,每年针对数字系列的加强版本并没有出现,反而是针对一加9R进行了加量升三年期间,JOLED与TCL华星研发大尺寸印刷OLED面板据CINNOResearch月度国内手机销量监测数据显示,2021年上半年中国市场智能手机销量约1。6亿部,同比增长12,而2021年上半年,中国市场AMOLED智能手机销量占比5