# go-design-pattern **Repository Path**: jonluo/go-design-pattern ## Basic Information - **Project Name**: go-design-pattern - **Description**: 设计模式 golang实现 - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2019-02-12 - **Last Updated**: 2024-09-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # go-design-pattern 用Go实现23种设计模式 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结 使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性 毫无疑问,设计模式是软件工程的基石 ![](design.png) > 创建型 | 模式 | 文件 | 描述 | | :--- | :---- | :------ | | 工厂方法模式 | factory_method_pattern | 定义一个创建对象的接口,让子类决定实例化那个类 | | 抽象工厂模式 | abstract_factory_pattern | 创建相关或依赖对象的家族,而无需明确指定具体类 | | 建造者模式 | builder_pattern | 封装一个复杂对象的构建过程,并可以按步骤构造 | | 原型模式 | prototype_pattern|通过复制现有的实例来创建新的实例 | | 单例模式 | singleton_pattern | 某个类只能有一个实例,提供一个全局的访问点 | > 结构型 | 模式 | 文件 | 描述 | | :--- | :---- | :------ | | 适配器模式 | adapter_pattern |将一个类的方法接口转换成客户希望的另外一个接口 | | 桥接模式 |bridge_pattern |将抽象部分和它的实现部分分离,使它们都可以独立的变化 | | 组合模式 | composite_pattern | 将对象组合成树形结构以表示“部分-整体”的层次结构| | 装饰模式 | decorator_pattern | 动态的给对象添加新的功能 | | 外观模式 | facade_pattern | 对外提供一个统一的方法,来访问子系统中的一群接口| | 享元模式 | flyweight_pattern |通过共享技术来有效的支持大量细粒度的对象 | | 代理模式 | proxy_pattern | 为其他对象提供一个代理以便控制这个对象的访问 | > 行为型 | 模式 | 文件 | 描述 | | :--- | :---- | :------ | | 解释器模式 | interpreter_pattern | 给定一个语言,定义它的文法的一种表示,并定义一个解释器| | 迭代器模式 | iterator_pattern |一种遍历访问聚合对象中各个元素的方法,不暴露该对象的内部结构| | 中介者模式 | mediator_pattern |用一个中介对象来封装一系列的对象交互| | 观察者模式 | observer_pattern | 对象间的一对多的依赖关系 | | 状态模式 | state_pattern | 允许一个对象在其对象内部状态改变时改变它的行为 | | 策略模式 | strategy_pattern | 定义一系列算法,把他们封装起来,并且使它们可以相互替换 | | 模板方法模式 | template_method_pattern | 定义一个算法结构,而将一些步骤延迟到子类实现 | | 备忘录模式 | memento_pattern | 在不破坏封装的前提下,保持对象的内部状态 | | 访问者模式 | visitor_pattern | 在不改变数据结构的前提下,增加作用于一组对象元素的新功能| | 责任链模式 | chain_of_responsibility_pattern | 将请求的发送者和接收者解耦,使的多个对象都有处理这个请求的机会 | | 命令模式 | command_pattern | 将命令请求封装为一个对象,使得可以用不同的请求来进行参数化 |