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

世界做火的游戏视频网站怎么建立自己的网站

世界做火的游戏视频网站,怎么建立自己的网站,沧州市网站制作,变身小说 wordpress四、prototype 原型模式 https://refactoringguru.cn/design-patterns/prototype 如果希望 复制对象, 可使用 “prototype 模式” 如果 “待复制的对象” 是 interface 而不是 class, 或者如果 class 有 private 变量时. 无法知道 "待复制的对象"的细节, 则需要其…

四、prototype 原型模式

https://refactoringguru.cn/design-patterns/prototype

如果希望 复制对象, 可使用 “prototype 模式”

如果 “待复制的对象” 是 interface 而不是 class, 或者如果 class 有 private 变量时. 无法知道 "待复制的对象"的细节, 则需要其实现 “clone()” 方法供外部调用.

4.1 inode

本例希望实现文件系统的复制功能. 数据结构是 inode 接口, file 和 folder 都实现了该接口. 详见 https://refactoringguru.cn/design-patterns/prototype/go/example

当然, 另一条路是: 也可以直接用序列化+反序列化实现复杂对象的 clone()

4.1.1 inode_test

package _41inodeimport "testing"func TestInode(t *testing.T) {d1 := &directory{name:     "json",children: []inode{&file{name: "a.json"}, &file{name: "b.json"}},}d2 := &directory{name:     "yaml",children: []inode{&file{"c.yaml"}, &file{"d.yaml"}},}f1 := &file{name: "e.txt"}f2 := &file{name: "f.sql"}directoryHome := directory{name:     "/home",children: []inode{d1, d2, f1, f2},}directoryHome.print(printIndent)cp := directoryHome.clone()cp.print("  ")
}// code result
=== RUN   TestInode/homejsona.jsonb.jsonyamlc.yamld.yamle.txtf.sql/home_clonejson_clonea.json_cloneb.json_cloneyaml_clonec.yaml_cloned.yaml_clonee.txt_clonef.sql_clone
--- PASS: TestInode (0.00s)
PASS

4.1.2 inode

package _41inode// inode 是文件系统的节点
type inode interface {// 打印此节点的信息, indent 是缩进符(如\t)print(indent string)// 复制此节点clone() inode
}const printIndent = "  "

4.1.3 file

package _41inodeimport "fmt"type file struct {// 文件名name string
}func (f *file) print(indent string) {str := indent + f.namefmt.Println(str)
}func (f *file) clone() inode {return &file{name: f.name + "_clone"}
}

4.1.4 directory

package _41inodeimport ("fmt"
)type directory struct {// 目录名name string// 子节点children []inode
}func (d *directory) print(indent string) {fmt.Println(indent + d.name)for _, child := range d.children {child.print(indent + printIndent) // 在基础 indent 的基础上, 再添加 printIndent}
}func (d *directory) clone() inode {children := make([]inode, 0)for _, child := range d.children {children = append(children, child.clone())}cp := &directory{name:     d.name + "_clone",children: children,}return cp
}

http://www.dt0577.cn/news/43569.html

相关文章:

  • 建设美团网站百度登录页面
  • 网络服务商机构域名是什么seo外链优化方法
  • 有什么网站可以做电子网络游戏推广员是做什么的
  • 英文WordPress站点切换为中文广州搜索排名优化
  • 专业网站建设哪里有茶叶网络营销策划方案
  • 网站优化建设山东白城seo
  • 做瞹网站公司网站推广方法
  • 网站做优化一开始怎么做seo有哪些经典的案例
  • 有没有哪个做美食的网站关键词优化的价格查询
  • 网站什么时候做SEO优化最合适seo系统优化
  • 最好免费的高清视频济南百度推广优化
  • 昆明建网站电话网络seo推广培训
  • java做网站不如php吗网站关键词优化应该怎么做
  • 外贸订单流失严重网站seo设置是什么
  • 东莞网站设计建设怎样在百度上免费建网站
  • 做平面免费接单网站关键词优化按天计费
  • js做各类图表网站软文推广代表平台
  • 广州seo网站百度在线客服系统
  • 方案 网站河南新站关键词排名优化外包
  • 帮别人做网站的单子优化seo软件
  • 西安买公司的网站建设济南百度推广优化
  • 重庆网站开发设计公司百度ai营销中国行
  • 什么是网站功能需求成都纯手工seo
  • 用asp做网站的流程百度网盘客户端下载
  • 前端作业做一个网站安年软文网
  • 设计风格网站欣赏网络推广有前途吗
  • 网站建设优化服务信息成人用品网店进货渠道
  • 微网站用什么软件做推广小程序拿佣金
  • 中国建设银行笔试确认网站谷歌 翻墙入口
  • 手机网站开发入门互联网推广公司靠谱吗