![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式(GoLang)
文章平均质量分 80
小叶曲
这个作者很懒,什么都没留下…
展开
-
观察者模式——拒绝Go代码臃肿
观察者模式——拒绝Go代码臃肿转载 2023-03-08 23:12:19 · 79 阅读 · 0 评论 -
单例模式
单例模式是用来控制类型实例的数量的,当需要确保一个类型只有一个实例时,就需要使用单例模式由于要控制数量,那么可想而之只能把实例的访问进行收口,不能谁来了都能 new 一个出来,所以单例模式还会提供一个访问该实例的全局端口,一般都会命名个之类的函数用作实例访问的端口。又因为在什么时间创建出实例,单例模式又可以分裂出 饿汉模式和 懒汉模式,前者适用于在程序早期初始化时创建已经确定需要加载的类型实例,比如项目的数据库实例。后者其实就是延迟加载的模式,适合程序执行过程中条件成立才创建加载的类型实例。转载 2023-04-24 22:49:36 · 242 阅读 · 0 评论 -
工厂模式——三个Level
设计模式中的工厂模式是我们编写代码时常用的一种建造型模式,用于创建指定类的实例。在不使用设计模式的时候,我们是怎么创建类的实例的呢?别多想,这个问题没坑,就是我们写代码时直接用 new 关键字,直接创建实例。比如 Java 语言里是通过 new 关键字直接调用类的构造方法,完成实例的创建。而像 Go 语言这类,虽说是非面向对象语言,但也提供了创建类型实例指针的 new 方法。那既然能直接 new ,有人肯定会问“那为什么还要用设计模式啊?而且听说工厂模式里边还能分出好几种工厂”。转载 2023-04-24 23:45:38 · 60 阅读 · 0 评论 -
原型模式
通过复制、拷贝或者叫克隆已有对象的方式来创建新对象的设计模式叫做原型模式,被拷贝的对象也被称作原型对象。原型对象按照惯例,会暴露出一个 Clone 方法,给外部调用者一个机会来从自己这里“零成本”的克隆出一个新对象。这里的“零成本”说的是,调用者啥都不用干,干等着,原型对象在 Clone 方法里自己克隆出自己,给到调用者,所以按照这个约定所有原型对象都要实现一个 Clone 方法。这里我们用UML类图描述一下原型模式中各角色拥有的行为以及它们之间的关系至于原型对象克隆自己的时候用的是深拷贝还是浅拷贝。转载 2023-05-07 23:15:28 · 56 阅读 · 0 评论 -
建造者模式——Go开源库、大项目的公共包
建造者模式,也有翻译成生成器模式的,大家看到后知道他们是一个东西,都是翻译过来的就行。它是一种对象构建模式,是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。那么什么情况下适合使用建造模式呢?当要构建的对象很大并且需要多个步骤时,使用构建器模式,有助于减小构造函数的大小。我们先来看下其他语言里的 Builder,再看看 Go 怎么使用,进行个对比。转载 2023-05-08 22:58:35 · 95 阅读 · 0 评论 -
模板模式——提炼流程,减少重复开发
模版模式,有的也翻译成模版方法模式,主要是因为这个模式里有个模版方法,不过后面实际应用的时候我会提到,这个模版方法在设计一些有客户端和服务多次交互的场景里,其实也可以是虚拟的,我们自己形成意识设计API即可,不一定非要在设计模式的类实现里真实存在。当要做一件事儿的时候,这件事儿的流程和步骤是固定好的,但是每一个步骤的具体实现方式是不一定的。这个时候就可以使用模板模式。转载 2023-05-11 11:37:25 · 179 阅读 · 0 评论 -
策略模式——if else 分支太多?快来治理一下
策略模式是一种行为设计模式,通过策略模式,可以在运行时修改一个对象的行为。很多资料里对它的定义是:定义一类算法族,将每个算法分别封装起来,让他们可以互相替换,此模式让算法的变化独立于使用算法的客户端。看完策略模式这个定义,你是不是也有一种看了等于没看的感觉,我一开始看的时候也是这样,下面我再用一些大白话给大家解释一下。转载 2023-05-12 11:29:33 · 242 阅读 · 0 评论