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

石家庄建设学校冯耀宗seo博客

石家庄建设学校,冯耀宗seo博客,江苏省工程建设信息官方网,做网上商城网站设计文章目录 前言代码结果总结 前言 本文章尝试使用go实现“原型”。 代码 package mainimport ("fmt" )// 不同原型标志枚举 type Type intconst (PROTOTYPE_1 Type iotaPROTOTYPE_2 )// 原型接口 type IPrototype interface {Clone() IPrototypeMethod(value int)P…

文章目录

  • 前言
  • 代码
  • 结果
  • 总结


前言

本文章尝试使用go实现“原型”。


代码

package mainimport ("fmt"
)// 不同原型标志枚举
type Type intconst (PROTOTYPE_1 Type = iotaPROTOTYPE_2
)// 原型接口
type IPrototype interface {Clone() IPrototypeMethod(value int)Print()
}// 具体原型1
type ConcretePrototype1 struct {name  stringvalue int
}// 构造函数
func NewConcretePrototype1ByFields(name string, value int) *ConcretePrototype1 {return &ConcretePrototype1{name,value,}
}func NewConcretePrototype1ByObject(cp *ConcretePrototype1) *ConcretePrototype1 {return &ConcretePrototype1{name:  cp.name,value: cp.value,}
}// 接口方法
func (cp *ConcretePrototype1) Clone() IPrototype {return NewConcretePrototype1ByObject(cp)
}func (cp *ConcretePrototype1) Method(value int) {cp.value = value
}func (cp *ConcretePrototype1) Print() {fmt.Println("Call Method1 from ", cp.name, " with field : ", cp.value)
}// 具体原型2
type ConcretePrototype2 struct {name  stringvalue int
}// 构造函数
func NewConcretePrototype2ByFields(name string, value int) *ConcretePrototype2 {return &ConcretePrototype2{name,value,}
}func NewConcretePrototype2ByObject(cp *ConcretePrototype2) *ConcretePrototype2 {return &ConcretePrototype2{name:  cp.name,value: cp.value,}
}// 接口方法
func (cp *ConcretePrototype2) Clone() IPrototype {return NewConcretePrototype2ByObject(cp)
}func (cp *ConcretePrototype2) Method(value int) {cp.value = value
}func (cp *ConcretePrototype2) Print() {fmt.Println("Call Method2 from ", cp.name, " with field : ", cp.value)
}// 原型工厂
type PrototypeFactory struct {prototypes map[Type]IPrototype
}func NewPrototypeFactory() *PrototypeFactory {return &PrototypeFactory{prototypes: map[Type]IPrototype{PROTOTYPE_1: NewConcretePrototype1ByFields("PROTOTYPE_1 ", 1),PROTOTYPE_2: NewConcretePrototype2ByFields("PROTOTYPE_2 ", 2),},}
}func (p *PrototypeFactory) CreatePrototype(t Type) IPrototype {return p.prototypes[t].Clone()
}// 客户端代码
func clientCode(p *PrototypeFactory) {fmt.Println("Let's create a Prototype 1")prototype1 := p.CreatePrototype(PROTOTYPE_1)prototype2 := p.CreatePrototype(PROTOTYPE_1)prototype1.Method(3)prototype2.Method(4)prototype1.Print()prototype2.Print()fmt.Println()fmt.Println("Let's create a Prototype 2")prototype1 = p.CreatePrototype(PROTOTYPE_2)prototype2 = p.CreatePrototype(PROTOTYPE_2)prototype1.Method(5)prototype2.Method(6)prototype1.Print()prototype2.Print()
}func main() {clientCode(NewPrototypeFactory())
}

结果

Let's create a Prototype 1
Call Method1 from  PROTOTYPE_1   with field :  3
Call Method1 from  PROTOTYPE_1   with field :  4Let's create a Prototype 2
Call Method2 from  PROTOTYPE_2   with field :  5
Call Method2 from  PROTOTYPE_2   with field :  6

总结

新人设计模式理解,望大家多多指点。

http://www.dinnco.com/news/34710.html

相关文章:

  • 做网站要注册公司么全媒体广告策划营销
  • 蔬菜基地做网站合适吗seo推广怎么样
  • 怎么做游戏平台网站设计网站用什么软件
  • 中国商标网官网入口武汉抖音seo搜索
  • 做网站设计公司价格2345网址导航大全
  • 大连政府建设工程信息网站seo关键词优化要多少钱
  • 全国建设厅网站百度最新秒收录方法2023
  • 做网站什么时候注册商标中国疾控卫生应急服装
  • thinkcmf做网站快不快网络服务器是指什么
  • 哪个网站使用vue 做的国外比较开放的社交软件
  • 网站建设和管理百度经验首页官网
  • 学做窗帘要下载哪个网站上海今天发生的重大新闻
  • 公司网站推广计划书怎么做直播营销的优势有哪些
  • 做网站开发最多能做几年网店推广方案范文
  • 天津怎么建立企业网站适合奖励自己的网站免费
  • 网站建设收费标准报价看广告收益的正规平台
  • 徐州党廉政建设网站足球比赛直播
  • 网站推广含义广州百度推广排名优化
  • 电子商务网站的建设课件微博推广方式有哪些
  • 在线做头像的网站网络营销渠道有哪几种
  • 宁波网站制作公司哪家好杭州seo网站建设
  • 电子商务网站建设核心是seo自学网
  • 导航网站制作 zhihu南宁百度seo软件
  • 长沙网站建设模板全国各城市感染高峰进度查询
  • wordpress 板块seo教程论坛
  • 广告拍摄山东seo优化
  • 巴彦淖尔 网站建设高质量关键词搜索排名
  • 数码公司网站建设调查站长之家域名查询排行
  • 济宁市松岳建设机械有限公司网站优化工具箱下载
  • drupal wordpress 性能西安百度关键词优化排名