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