
设计模式
文章平均质量分 61
设计模式笔记
yimtcode
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式:Go观察者模式
设计模式:Go观察者模式 1.简介 当主题状态发生变更时通知所有观察者。 接口主题(Subject):定义了添加、删除和通知观察者的抽象方法。 具体主题(ConcreteSubject):主题的具体实现。 观察者(Observer):定义了接收主题通知的方法。 具体观察者(ConcreteObServer):观察者具体实现。 简单来说就像现实中我们买东西没有现货了选择到货通知。我们(观察者)订阅了到货信息(主题),到货过后,店家(主题)通知我们(观察者)有货了可以买了。我们(观察者)订阅了到货信息(主题)同原创 2021-06-26 21:12:27 · 240 阅读 · 1 评论 -
设计模式:Go装饰模式
设计模式:Go装饰模式 结构型模式 1. 简介 装饰模式向一个现有对象添加新功能或修改原有功能,同时又不改变其原有结构。 优点 不修改原有对象添加或修改原有功能。 缺点 多层装饰会大幅度提高代码复杂度。 2. UML 3. 演示 3.1. 文件树型图 decorator ├── calc.go ├── calculator.go ├── decorator.go ├── decorator_test.go └── go.mod 3.2. 代码 calculator.go package de原创 2020-11-06 20:59:29 · 113 阅读 · 0 评论 -
设计模式:Go单例设计模式
Go:单例设计模式 创建型模式 一、作用 保证整个系统中有且只有一个实例。 二、我的理解 优点 1.控制整个系统中某个strcut只有一个实例 2.懒惰启动 控制整个系统中某个strcut只有一个实例,这个没有什么好说了。主要讲下懒惰启动,可以在我们启动系统时不必初始化整个系统的所有模块,如果一个系统有成百上千个模块,在项目启动瞬间全部执行初始化,会造成项目启动缓慢,启动时占用大量资源,有些初始化的在未来系统运行时还不一定需要的模块,而懒惰启动很好的解决了这个问题,只在第一次调用该模块时初始化该模块,分原创 2020-09-20 11:11:38 · 107 阅读 · 0 评论 -
设计模式:Go简单工厂模式
Go:简单工厂模式 创建型模式 一、作用 功能类型其他语言的构造函数,一般用于创建Go结构体时,结构体字段初始化。 二、我的理解 优点: 1.禁止用户使用Demo{}或new(Demo)方法创建实例,在些比较复杂的对象不能直接Demo{}或new(Demo)方式创建,必须要使用NewDemo()方式为其创建实例,但同时也要防止别人使用Demo{}或new(Demo)方式创建。 2.方便替换,当出现该模块需要替换时,只需要重新实现当前接口就可以无缝替换当前模块。 3. 屏蔽模块细节,当需要A和B功能时,使原创 2020-09-27 18:57:34 · 244 阅读 · 0 评论 -
设计模式:Go适配器模式
设计模式:Go适配器模式 1. 简介 适配器模式用于转换一种接口适配另一种接口。 2. 图示 将笔记本HDMI接口视频输出转换成VGA视频输出。 3. 代码 3.1. 树形图 adapter ├── adapter.go ├── adapter_test.go └── go.mod 3.2. 代码 adapter.go package adapter // HDMI输出接口 type HDMI interface { UseHDMI() string } // VGA输出接口 type VGA i原创 2020-10-21 20:42:52 · 237 阅读 · 0 评论 -
设计模式:Go迭代器模式
设计模式:迭代器模式 行为型模式 1. 介绍 1.1. 定义 不需要知道集合的底层表示,顺序访问集合中的每个元素。 1.2. 角色 抽象迭代器(Iterator):定义遍历访问聚合的接口,通常用First()、HasNext()和Next()等。 具体迭代器(Concretelterator):抽象迭代器的具体实现,里面需要记录当前遍历位置。 抽象聚合(Aggregate):定义添加、删除、获取迭代器的抽象接口。 具体聚合(ConcreteAggregate):抽象聚合的具体实现。 2. 图示 3原创 2020-10-06 20:16:53 · 223 阅读 · 0 评论