github:https://github.com/sevenelevenlee/go-patterns Golang设计模式思想 前言 一切设计模式都是灵活应用struct的组合模式,以及go隐形继承接口的特性 go中的interface就是一些方法装饰, 而struct并不依赖于接口 设计模式
转载 2020-02-21 22:30:00
185阅读
package fatory import "fmt" type Device interface{    StartDevice() } type KeyBoard struct { } func (k *KeyBoard) StartDevice(){    fmt.Println("Keyboard is ready to work!") } type Mouse struct 
原创 2020-05-17 21:12:04
1237阅读
[选项模式] package main import "fmt" type OptionFunc func(*DoSomethingOption) type DoSomethingOption struct { a int b string c bool } func NewDoSomethingO
原创 2024-02-19 16:23:25
12阅读
type Options struct { StrOption1 string StrOption2 string StrOption3 string IntOption1 int IntOption2 int IntOption3 int} type Option func(opts *Optio
原创 2022-05-13 10:41:12
165阅读
要点:sync.Once 的应用高并发场景下读写锁    package singleton import "sync" var  (    p *Pet    once sync.Once ) func init(){    once.Do(       func() {          p = &Pet{}       }) } func GetInstance() *Pet
原创 2020-05-18 21:35:30
690阅读
Golang设计模式-单例模式
转载 2021-07-30 15:37:00
210阅读
2评论
工厂模式是一种创建型模式,也是最常用设计模式之一。调用方通过工厂产出并获取对象,可以不必关注对象创建的细节和构建逻辑。 在工厂模式下,调用方只和工厂进行交互,并告诉工厂具体获取哪种类型的对象。工厂负责和相应的struct交互,并返回需要的对象。 如下是工厂模式的UML类图: 接下来是一个工厂模式的 ...
转载 2021-09-05 22:44:00
552阅读
2评论
命令模式是一种行为型模式。它建议将请求封装为一个独立的对象。在这个对象里包含请求相关的全部信息,因此可以将其独立执行。 在命令模式中有如下基础组件: Receiver:唯一包含业务逻辑的类,命令对象会将请求传递给它,请求的最终处理者 Command:组装了一个Receiver成员,并绑定实现了Rec ...
转载 2021-10-02 19:20:00
208阅读
2评论
企业规模的软件系统该如何设计呢?在开始写代码之前,我们需要选择一个合适的架构,这个架构将决定软件实施过程中的功能属性和质量属性。因此,了解软件设计中的不同架构模式对我们的软件设计会有较大的帮助。 软件架构模式 什么是架构模式?根据维基百科:架构模式是针对特定软件架构场景常见问题的通用、可重用解决方案
原创 2023-06-12 10:36:16
144阅读
这里介绍软考中考的比较多的几种。 1.观察者模式(行为型模式) 一个观察目标+多个观察者。 当观察目标改变状态时,它的所有观察者都会收到通知并且自动更新。 可以根据需要增加和删除观察者,使得系统更易于扩展。 2.访问者模式(行为型模式) 封装一些操作,操作可以修改以适应不同类型的元素,接受这个操作的 ...
转载 2021-11-03 20:03:00
172阅读
2评论
1.单例2.策略模式3.观察者模式 
原创 2023-04-17 10:20:36
81阅读
小疑问: 上面说的优点中,为什么只有一个线程能加载,其他线程需要等待,从哪里看出保证线程安全的呢?
原创 2021-07-13 10:24:56
106阅读
1.单例模式 单例模式的定义:保证一个类仅仅有一个实例,并提供一个访问他的全局访问点。 意义:有的时候,一些对象我们仅仅需要一个,比如说线程池、全局缓存、浏览器中的window对象,我 们在前端也经常会使用到单例,当我们点击登录按钮的时候,我们会出现一个登录的副创,这个浮窗是唯 一的,无论我们点击多少次,这个浮窗仅仅会被创建一次,那么这个button就应该使用单例模式来进行 创建。//懒汉式单例
转载 2023-10-07 16:20:47
58阅读
Golang 常见设计模式之装饰模式想必只要是熟悉 Python 的同学对装饰模式一定不会陌生,这类 Python 从语法上原生支持的装饰器,大大提高了装饰模式在 Python 中的应用。尽管 Go 语言中装饰模式没有 Python 中应用的那么广泛,但是它也有其独到的地方。接下来就一起看下装饰模式在 Go 语言中的应用。简单装饰器我们通过一个简单的例子来看一下装饰器的简单应用,首先编写一个 he
原创 2022-09-08 14:35:48
147阅读
建造者模式是一种创建型模式,主要用来创建比较复杂的对象。 建造者模式的使用场景: 建造者模式通常适用于有多个构造器参数或者需要较多构建步骤的场景。使用建造者模式可以精简构造器参数的数量,让构建过程更有条理。 可以为同一个产品提供两个不同的实现。比如,在下面的代码中,为house类型创建了两个不同的实 ...
转载 2021-09-05 10:48:00
198阅读
2评论
迭代器模式是一种行为型模式。在这种模式中,集合结构会提供一个迭代器。通过这个迭代器可以顺序遍历集合中的每个元素而不需要暴露其具体的实现。 下面是迭代器模式的一些具体实现: Iterator 接口: 这个接口会定义一些基础的操作函数,如hasNext()或getNext()等。通过名称就可以看出,这些 ...
转载 2021-10-02 22:25:00
479阅读
2评论
之前我们介绍了工厂设计模式,现在我们再看一下抽象工厂设计模式。抽象工程模式顾名思义就是对工厂模式的一层抽象,也是创建型模式的一种,通常用来创建一组存在相关性的对象。 UML类图大致如下: 类图比较复杂,最好用个例子来说明。比方说,国内有两家生产运动服的工厂:nike和adidas 。现在我们想购买一 ...
转载 2021-09-07 07:05:00
280阅读
2评论
单例模式恐怕是最为人熟知的一种设计模式了。它同样也是创建型模式的一种。当某个struct只允许有一个实例的时候,我们会用到这种设计模式。这个struct的唯一的实例被称为单例对象。下面是需要创建单例对象的一些场景: 数据库实例:一般在开发中,对于一个应用,我们通常只需要一个数据库对象实例 日志实例: ...
转载 2021-09-10 22:12:00
103阅读
2评论
原型模式也是一种创建型模式,它可以帮助我们优雅地创建对象的拷贝。在这种设计模式里面,将克隆某个对象的职责交给了要被克隆的这个对象。被克隆的对象需要提供一个clone()方法。通过这个方法可以返回该对象的拷贝。 原型模式的使用场景: 创建新对象的操作比较耗资源(如数据库操作)或代价比较高时。比较起从头 ...
转载 2021-09-11 21:52:00
221阅读
2评论
责任链模式是一种行为型设计模式。在这种模式中,会为请求创建一条由多个Handler组成的链路。每一个进入的请求,都会经过这条链路。这条链路上的Handler可以选择如下操作: 处理请求或跳过处理 决定是否将请求传给这条链路上的下一个Handler 下面是责任链模式的用例图: 关于责任链模式的用途最好 ...
转载 2021-09-25 20:32:00
459阅读
2评论
  • 1
  • 2
  • 3
  • 4
  • 5