• Stars
    star
    1,924
  • Rank 24,092 (Top 0.5 %)
  • Language
    Go
  • Created about 4 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

golang design pattern go 设计模式实现,包含 23 种常见的设计模式实现,同时这也是极客时间-设计模式之美 的笔记

go-design-pattern

更多系列文章可以扫描下方二维码关注博主

微信公众号

总结

原本预计是在十月底更新完毕这个系列,到今天是11-05,晚了几天,不过也还好,这是第一次这么密集的去更新博客上的内容,更多的是以笔记的形式来呈现,加上这篇一共24篇文章差不多两个半月的时间,平均每周输出两篇,感觉还是不错。后续可能会视情况不定期的更新一些实战内容,也有可能没有。接下来下一个系列应该是数据结构与算法,包含对 Go 中一些底层数据和标准库包的学习,例如 slice, sort 等等。

话说回来,回头再看学习设计模式我们究竟需要学习一些什么?

  • 写 Go 需要使用到设计模式么?
    • 需要,但是切记请勿使用其他语言的方式来写 Go
    • 如果看过之前的一些文章,就会发现类似 JAVA 的这些面向对象语言中的某些设计模式的写法在 Go 中会十分的别扭
    • 但是 Go 不需要设计模式么?不是的,设计模式的思想是想通的,并且我们一直都在使用,例如我们常见的对象创建方式 NewXXX 这其实就是一个简单工厂
  • 设计模式学习的重点是什么?
    • 设计原则,以及设计模式的使用场景和优缺点,实现相对来说还没有那么重要
    • 如果是常见的设计模式是武术招式,那么设计原则就是内功心法,没有内功心法那么招式套路也就是花架子
    • 熟练掌握不同设计模式的使用场景可以帮助我们学会见招拆招,灵活应用而不是只会套路
  • 最后设计模式不是银弹,不要拿着🔨就觉得哪里都像是钉子,不要过早优化,持续重构才是正道

设计原则

同时这也是 Code Review 的重要标准之一

点击展开设计原则

设计原则

设计模式

点击展开设计模式

设计模式

Go设计模式

  • 单例模式包含饿汉式和懒汉式两种实现
  • 工厂模式包含简单工厂、工厂方法、抽象工厂、DI容器
  • 代理模式包含静态代理、动态代理(采用 go generate 模拟)
  • 观察者模式包含观察者模式、eventbus
类型 设计模式(Github) 常用 博客
创建型 单例模式(Singleton Design Pattern) Go设计模式01-单例模式
工厂模式(Factory Design Pattern) Go设计模式02-工厂模式&DI容器
建造者模式(Builder Design Pattern) Go设计模式03-建造者模式
原型模式(Prototype Design Pattern) Go设计模式04-原型模式
结构型 代理模式(Proxy Design Pattern) Go设计模式06-代理模式(generate实现类似动态代理)
桥接模式(Bridge Design Pattern) Go设计模式07-桥接模式
装饰器模式(Decorator Design Pattern) Go设计模式08-装饰器模式
适配器模式(Adapter Design Pattern) Go设计模式09-适配器模式
门面模式(Facade Design Pattern) Go设计模式10-门面模式
组合模式(Composite Design Pattern) Go设计模式11-组合模式
享元模式(Flyweight Design Pattern) Go设计模式12-享元模式
行为型 观察者模式(Observer Design Pattern) Go设计模式13-观察者模式(实现简单的EventBus)
模板模式(Template Method Design Pattern) Go模板模式14-模板模式
策略模式(Strategy Method Design Pattern) Go设计模式15-策略模式
职责链模式(Chain Of Responsibility Design Pattern) Go设计模式16-职责链模式(Gin的中间件实现)
状态模式(State Design Pattern) Go设计模式17-状态模式
迭代器模式(Iterator Design Pattern) Go设计模式18-迭代器模式
访问者模式(Visitor Design Pattern) Go设计模式19-访问者模式
备忘录模式(Memento Design Pattern) Go设计模式20-备忘录模式
命令模式(Command Design Pattern) Go设计模式21-命令模式
解释器模式(Interpreter Design Pattern) Go设计模式22-解释器模式
中介模式(Mediator Design Pattern) Go设计模式23-中介模式

More Repositories

1

scuplus-wechat

We川大小程序[scuplus] 使用wepy开发的完善的校园综合小程序, 40+页面,前后端开源,包括成绩、课表、失物招领、图书馆、新闻资讯等等常见校园场景功能
Vue
665
star
2

utools

utools 插件,utools api, chrome历史记录搜索、vscode历史项目搜索、otp两步验证,iconfont图标搜索下载、语雀搜索等
TypeScript
291
star
3

ImageOCR

PHP验证码识别[PHP CAPTCHA Recognition]
PHP
271
star
4

protoc-gen-go-gin

从 protobuf 文件中生成使用 gin 的 http rpc 服务 (protobuf to gin code)
Go
109
star
5

scuplus-go

We川大小程序后端
Go
105
star
6

blog-code

https://lailin.xyz 博客代码
Go
39
star
7

PaperDownload

知网/万方 论文/期刊批量检索下载
Go
24
star
8

go-algorithm

【更新中】Go 数据结构与算法系列文章,本系列文章主要会包括常见的数据结构与算法实现,同时会包括 Go 标准库代码的分析理解,讲到对应章节的时候优先学习分析 Go 的源码实现,例如 slice、list、sort 等,然后可能会有一些常见的案例实现,同时这也是 极客时间-数据结构与算法之美 的课程笔记
Go
21
star
9

siyuan-sync-github

思源笔记挂件块,同步 markdown 笔记文件为 到 github,支持迁移笔记到图床
TypeScript
19
star
10

notion-blog-actions

convert notion database pages to markdown files for hexo or hugo
JavaScript
18
star
11

ATool

通过调用安卓加速度传感器,绘制曲线图,导出为文本文件,并且计算交通工具的舒适程度
Java
15
star
12

cet

免证四六级查询
C
14
star
13

gen-const-msg

提取源码文件中的常量注释,生成对应的 msg 信息,常用于err code当中
Go
11
star
14

wxapp-schedule

小程序课程表组件
JavaScript
9
star
15

mohuishou.github.io

Mohuishou's Blog
HTML
9
star
16

apollo-viper-provider

use ctripcorp/apollo as viper's RemoteConfigProvider
Go
9
star
17

go-sort

常用排序算法的golang实现
Go
6
star
18

php-webhook

git自动部署钩子
PHP
6
star
19

mohuishou

Go
5
star
20

goDataStruct

中国大学MOOC数据结构课程学习
Go
4
star
21

autoSign

联通沃贝相关自动签到包
PHP
3
star
22

monitor

web服务监控
Go
3
star
23

sms-notice

短信通知系统
PHP
3
star
24

typecho2hexo

转换typecho数据为hexo格式的md文件,支持附件(图片)下载,附件(图片)上传到七牛
PHP
3
star
25

evaluate-go

四川大学快捷评教
Vue
2
star
26

hugo-action

use github action with hugo
Shell
2
star
27

BabyBuddy-Baby

婴儿智能监护系统app婴儿端,前端。采用appcan平台开发
HTML
1
star
28

leetcode

1
star
29

email

邮件后台发送服务
Go
1
star
30

cloudbase-siyuan-note

使用 腾讯云 云开发一键部署 思源笔记
Python
1
star
31

resume

个人简历
1
star
32

go-test-multi-module

在单个仓库中支持多个 go mod 模块示例
Go
1
star
33

swugpa

西南大学绩点/平均分一键计算
PHP
1
star
34

yzdesign

yzdesign for phpwind
PHP
1
star