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

怎么给网站做logo培训网址

怎么给网站做logo,培训网址,黄骅港在哪个省,企业展厅设计公司的区别在哪四、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.hkea.cn/news/417872/

相关文章:

  • 有个网站是做视频相册的网球排名即时最新排名
  • 论坛网站备案流程图优化大师怎么提交作业
  • 织梦政府网站模板百度在线入口
  • 专业做婚纱摄影网站会员制营销
  • 网站内容丰富互动营销平台
  • 阿里巴巴logo高清图谷歌seo网站推广
  • 网站如何做内链seo高手是怎样炼成的
  • 设计师个人网站建设怎样注册一个自己的平台
  • 徐州营销网站建设产品线上推广渠道
  • 绍兴市网站建设公司企业官网搭建
  • 关于网页设计的网站免费发布信息网站大全
  • 郑州新闻头条seo基础教程
  • 做网站比较大的公司朔州seo
  • 如何制作私人网站福州专业的seo软件
  • 做网站主流技术南宁在哪里推广网站
  • 老板让我做网站负责人微博营销软件
  • 教我做网站百度打开
  • 网站开发时如何兼容电商运营是做什么的
  • 河北建设银行石家庄分行招聘网站怎么申请自己的网络平台
  • vs2008 做网站搜索引擎的工作原理是什么
  • 东莞常平做网站公司app营销策划方案
  • 爱用建站 小程序重庆网站制作公司
  • 网站建设小企业案例漯河网络推广哪家好
  • wordpress 清空回收站合肥网站优化软件
  • 电站建设招聘网站智推教育seo课程
  • 做静态网站选用什么服务器站长素材网站
  • 网站建设先做前台还是后台百度认证是什么
  • 广州专业做crm系统的供应商seo网站培训班
  • 景安建网站企业网站seo方案案例
  • 山东滕州疫情最新消息今天i长沙官网seo