设计模式之go语言实现

date
Jan 23, 2022
slug
design-pattern-and-golang-implement
status
Published
tags
编程开发
summary
23种设计模式并采用go语言实现
type
Post

创建型

单例模式

定义:一个类只允许创建一个对象(或者实例),这个类就是单例类,该设计模式叫单例设计模式,简称单例模式。

饿汉模式

懒汉模式

饿汉与懒汉兼容

优雅实现

工厂模式

简单工厂

工厂方法

抽象工厂

建造者模式

使用场景:当实例化对象的时候参数比较多,且参数之间存在依赖时可以考虑使用建造者模式。
使用示例:

结构型

代理模式

桥接模式

理解:一个类存在两个或者多个独立变化的维度,我们可以通过组合的方式,让这两个(或多个)维度可以独立的进行扩展。

装饰者模式

通过嵌套实现多个功能的扩展。
与代理模式的差别:代理模式附加的功能是和原始类不相关的功能

适配器模式

为了兼容解决一些原始类或者接口设计上的缺陷,或者为了将外部类或者接口做一些整合。

门面模式(外观模式)

为子系统提供一组统一的接口,定义一组高层接口让子系统更容易用。

组合模式

主要用于处理树形结构数据。

享元模式

享元:被共享的单元,目的是复用对象,节省内存。作为享元的对象是不可变对象。
不可变对象:对象初始化后,其属性均不能被修改。

行为型

观察者模式(发布订阅模式)

对象之间定义一个一对多的依赖,当一个对象发生变化,所有依赖的对象都会发生变化。

模板方法模式

在一个方法中定义一个算法(业务逻辑)骨架,将某些步骤推迟到子类中实现。模板方法模式可以让子类在不改变算法结构的情况下,重新定义算法中的某些步骤。模板模式主要用来解决复用和扩展的问题。

策略模式

责任链模式

将请求的发送和接受解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递下去,直到链上的某个接收对象能够处理它为止。

状态模式

命令模式

中介模式