首页  > 百科热搜  > Go设计模式(6)-单例模式

Go设计模式(6)-单例模式

发布时间:2023-06-15 22:04:57     作者:互联网收集     浏览量:53    

go单三

前面5篇文章讲解了设计模式的语法、面向对象分析、原则、代码编写、类图表示法,从本文开始讲述23设计模式。

后面会按照创建型、结构型、行为型的顺序来写

go单三

有7个模式并不太常用,他们分别是:组合模式、享元模式、状态模式、访问者模式、命令模式、解释模式、中介模式,所以常用的设计模式16个。

go单三

每篇文章尽量都会有类图、定义、分析、使用场景、实现、代码、扩展等信息。之所以包含这些信息,因为对于很多人来说,你问他个具体的设计原则、思想、模式的原理和实现,他都能回答得头头是道,但是,在实际的项目开发中,写出来的代码质量还是很差。这种情况出现的原因还是,相关的知识点都过于抽象,通俗点就是有点“假大空”,不够具体、不太能落地,所以导致理论和实践容易脱节。

单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

UML类图:链接为https://www.processon.com/view/link/6080def6079129456d4beecf

通过分析能够看出以下几点:

单例模式理解相对简单,一般在哪些场景下我们会用到单例模式呢?

单例模式的实现的时候需要考虑如下问题:

根据语言不同,实现方式也不一样,一般有饿汉式、懒汉式、双重检测、静态内部类、枚举等。无论使用哪种方式,核心目的都是为了只会生成一个实例

这里多少解释一下饿汉式和懒汉式。饿汉式可以简单的理解为实例提前创建好了,getInstance只是获取实例返回。懒汉式是调用getInstance的时候,getInstance负责生成唯一实例。两者各有优缺点,饿汉式不必考虑线程安全问题,实例生成的成本放在项目启动时,但不支持延迟加载;懒汉式需要考虑线程安全问题,支持延迟加载。

具体实现以前在文章Go单例实现方案中写过,实现方式比较简单

关于代码,此处说明几点:

3. 此处的实现方式是懒汉式,如果想使用饿汉式,可以使用init或者项目启动初始化时直接调用,具体实现大家可自己完成 4. 具体代码可以查看:https://github.com/shidawuhen/asap/blob/master/controller/design/6single.go

单例模式作为简单、常用的模式是一定需要掌握的。但单例模式也有一些缺点,如在继承、多态方面能力会弱一些,是否使用单例模式需要依据具体情况而定。另外单例模式也可以扩展到集群环境下、可以扩展为多例模式,这些内容大家有兴趣可以研究一下。

大家如果喜欢我的文章,可以关注我的公众号(程序员麻辣烫)

我的个人博客为:https://shidawuhen.github.io/

往期文章回顾:

招聘

设计模式

语言

架构

存储

网络

工具

读书笔记

思考

收藏文章

收藏

文章标签: 设计模式     Go     单例    
上一篇:“电末流刘备成版本黑科技,价格便宜、伤害也高,国服刘备都在出 下一篇:德高望重的明成祖朱棣,生母究竟是谁?