分享
  1. 首页
  2. 主题
  3. Go基础

Go 设计模式之建造者模式

smallBird · · 2329 次点击 · 开始浏览 置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

直接上代码。 不解释了。菜鸟中。 大牛可多多指正 ```go package main import "fmt" func main() { a := &LinkmgrImplBuilder{} b,err := a. SetSender("1"). SetOm(2). SetDrInfo(1,2,3). Build() if err != nil { return } b.Test() } type drinfo struct { dr1 int32 dr2 int32 dr3 int32 } type LinkMgr interface { Test() } type linkmgrImpl struct { drinfo om int32 sender string dbp string } func (l *linkmgrImpl) Test() { fmt.Println("建造成功") fmt.Println(l.dr3) fmt.Println(l.om) } type LinkmgrImplBuilder struct { lIl linkmgrImpl } func (l *LinkmgrImplBuilder) Build() (LinkMgr,error) { return newLinkMgr(l) } func (l *LinkmgrImplBuilder) SetOm(dr1 int32) *LinkmgrImplBuilder { l.lIl.om = dr1 return l } func (l *LinkmgrImplBuilder) SetSender(dr1 string) *LinkmgrImplBuilder { l.lIl.sender = dr1 return l } func (l *LinkmgrImplBuilder) SetDrInfo(dr1, dr2, dr3 int32) *LinkmgrImplBuilder { l.lIl.dr1 = dr1 l.lIl.dr2 = dr2 l.lIl.dr3 = dr3 return l } func newLinkMgr(lBuilder *LinkmgrImplBuilder) (LinkMgr,error) { if lBuilder.lIl.om == 0 { return nil,NewErr("cuowu") } l := &linkmgrImpl{ drinfo: lBuilder.lIl.drinfo, om: lBuilder.lIl.om, sender: lBuilder.lIl.sender, dbp: lBuilder.lIl.dbp, } return l,nil } type myerr struct { info string } func (e *myerr)Error()string{ return e.info } func NewErr(errinfo string)*myerr{ return &myerr{ info:errinfo, } } ```

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
2329 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)