• Stars
    star
    1,924
  • Rank 24,000 (Top 0.5 %)
  • Language
    Go
  • Created about 4 years ago
  • Updated 8 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