设计模式之go语言实现
date
Jan 23, 2022
slug
design-pattern-and-golang-implement
status
Published
tags
编程开发
summary
23种设计模式并采用go语言实现
type
Post
创建型单例模式饿汉模式懒汉模式饿汉与懒汉兼容优雅实现工厂模式简单工厂工厂方法抽象工厂建造者模式结构型代理模式桥接模式装饰者模式适配器模式门面模式(外观模式)组合模式享元模式行为型观察者模式(发布订阅模式)模板方法模式策略模式责任链模式状态模式命令模式中介模式
创建型
单例模式
定义:一个类只允许创建一个对象(或者实例),这个类就是单例类,该设计模式叫单例设计模式,简称单例模式。
饿汉模式
懒汉模式
饿汉与懒汉兼容
优雅实现
工厂模式
简单工厂
工厂方法
抽象工厂
建造者模式
使用场景:当实例化对象的时候参数比较多,且参数之间存在依赖时可以考虑使用建造者模式。
使用示例:
结构型
代理模式
桥接模式
理解:一个类存在两个或者多个独立变化的维度,我们可以通过组合的方式,让这两个(或多个)维度可以独立的进行扩展。
装饰者模式
通过嵌套实现多个功能的扩展。
与代理模式的差别:代理模式附加的功能是和原始类不相关的功能
适配器模式
为了兼容解决一些原始类或者接口设计上的缺陷,或者为了将外部类或者接口做一些整合。
门面模式(外观模式)
为子系统提供一组统一的接口,定义一组高层接口让子系统更容易用。
组合模式
主要用于处理树形结构数据。
享元模式
享元:被共享的单元,目的是复用对象,节省内存。作为享元的对象是不可变对象。
不可变对象:对象初始化后,其属性均不能被修改。
行为型
观察者模式(发布订阅模式)
对象之间定义一个一对多的依赖,当一个对象发生变化,所有依赖的对象都会发生变化。
模板方法模式
在一个方法中定义一个算法(业务逻辑)骨架,将某些步骤推迟到子类中实现。模板方法模式可以让子类在不改变算法结构的情况下,重新定义算法中的某些步骤。模板模式主要用来解决复用和扩展的问题。
策略模式
责任链模式
将请求的发送和接受解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递下去,直到链上的某个接收对象能够处理它为止。