当前位置: GO > Go 常用的设计模式

Go 常用的设计模式

2023-03-20 分类:GO 作者:admin 阅读(34)

1. 单例模式:

sync.Once 是 Golang package 中使方法只执行一次的对象实现,作用与 init 函数类似。但也有所不同。
init 函数是在文件包首次被加载的时候执行,且只执行一次
sync.Onc 是在代码运行中需要的时候执行,且只执行一次
当一个函数不希望程序在一开始的时候就被执行的时候,我们可以使用 sync.Once 。

2. 简单工厂模式

3. 抽象工厂模式

它返回的是接口而不是结构体。

4. 工厂方法模式

5. 策略模式

在项目开发中,我们经常要根据不同的场景,采取不同的措施,也就是不同的策略。比如,假设我们需要对 a、b 这两个整数进行计算,根据条件的不同,需要执行不同的计算方式。为了解耦,需要使用策略模式,定义一些独立的类来封装不同的算法,每一个类封装一个具体的算法(即策略)。

6. 模板模式

模板模式就是将一个类中能够公共使用的方法放置在抽象类中实现,将不能公共使用的方法作为抽象方法,强制子类去实现,这样就做到了将一个类作为一个模板,让开发者去填充需要填充的地方。

7. 代理模式

可以为另一个对象提供一个替身或者占位符,以控制对这个对象的访问。

8. 选项模式

选项模式通常适用于以下场景:

  • 结构体参数很多,创建结构体时,我们期望创建一个携带默认值的结构体变量,并选择性修改其中一些参数的值。
  • 结构体参数经常变动,变动时我们又不想修改创建实例的函数。例如:结构体新增一个 retry 参数,但是又不想在 NewConnect 入参列表中添加retry int这样的参数声明。

注意选项模式代码,WithTimeout 和 WithCaching 函数的返回类型是 Option 接口,而不是 optionFunc 类型。这不是一个错误,因为 Option 接口是用于描述修改选项的方式,而不是具体的函数类型。通过返回 Option 接口类型,我们可以在 NewConnect 函数中以统一的方式应用这些选项。所以,尽管 WithTimeout 和 WithCaching 返回的是 optionFunc 类型的函数,实际上它们是 Option 接口的实现。这使得我们可以将它们作为 Option 类型的参数传递给 NewConnect 函数,并在其中应用相应的选项。

不只是结构体类型,任何自定义类型都可以实现接口。

在 Go 语言中,接口是一种描述对象行为的类型。接口定义了一组方法的集合,任何类型只要实现了接口中定义的所有方法,就被认为是该接口的实现。


选项模式AI给出更简便的例子:

 

作者:潘晓华Michael
链接:https://www.jianshu.com/p/6eb74bfbd331
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


在go语言中,type可以定义任何自定义的类型

比如熟悉的:type dog struct{},type myInt int 等等

所以func也是可以作为类型自定义的,type myFunc func(int) int,意思是自定义了一个叫myFunc的函数类型,这个函数的签名必须符合输入为int,输出为int...把为什么自定义类型的原因也详细说明了一下。链接:https://blog.csdn.net/hjxisking/article/details/107469429

 

 

 

111111

「三年博客,如果觉得我的文章对您有用,请帮助本站成长」

赞(0) 打赏

支付宝
微信
0

支付宝
微信
标签:

上一篇:

下一篇:

你可能感兴趣

共有 0 - Go 常用的设计模式

博客简介

精彩评论

  • admin(6年前 (2020-03-09))

    分别用不同厚度的筏板定义,画图后这设置筏板变截面处理。 http://f.fwxgx.co...

    评:新文章!
  • admin(6年前 (2020-03-09))

    分别用不同厚度的筏板定义,画图后这设置筏板变截面处理。 http://f.fwxgx.co...

    评:新文章!
  • admin(6年前 (2020-03-09))

    新增一个框架图! http://biji.jinli.vip/wp-content/upl...

    评:新文章!
  • 一位WordPress评论者(6年前 (2020-02-13))

    嗨,这是一条评论。 要开始审核、编辑及删除评论,请访问仪表盘的“评论”页面。 评论者头像来自...

    评:世界,您好!