
去模式
GO语言的惯用设计和应用程序模式的策划集合。
TMRTS/Go-Patterns的叉子,但与其他很棒的叉子合并。可以使用图案中的图案
合并的存储库
- 合并:https://github.com/nynicg/go-patterns
- 合并:https://github.com/weichou1229/go-patterns
- 合并:https://github.com/jianhan/go-patterns
- 合并:https://github.com/sakari-ai/go-patterns
- 合并:https://github.com/restudy/go-patterns
创建模式
| 图案 | 描述 | 地位 |
|---|
| 抽象工厂 | 提供了一个用于创建复杂对象家族的界面 | ✔ |
| 建筑商 | 使用简单对象构建一个复杂的对象 | ✔ |
| 工厂方法 | 防御对象的实例化,以创建实例的专用功能 | ✔ |
| 对象池 | 实例化并维护一组相同类型的对象实例 | ✔ |
| 辛格尔顿 | 将一种类型的实例化限制为一个对象 | ✔ |
结构模式
| 图案 | 描述 | 地位 |
|---|
| 桥 | 将接口与实现相关联,以便两者可以独立变化 | ✔ |
| 合成的 | 封装并提供对许多不同对象的访问 | ✔ |
| 装饰师 | 静态或动态地将行为添加到对象中 | ✔ |
| 正面 | 将一种类型用作API与其他许多类型 | ✔ |
| 轻量级 | 重用具有相似/相同状态的对象的现有实例,以最大程度地减少资源使用情况 | ✔ |
| 代理人 | 为对象控制其动作提供了替代物 | ✔ |
| 适配器 | 为对象控制其动作提供了替代物 | ✔ |
行为模式
| 图案 | 描述 | 地位 |
|---|
| 责任链 | 避免将发件人耦合到接收方,而不是对象一个机会处理请求 | ✔ |
| 命令 | 捆绑命令和争论以后致电 | ✔ |
| 调解人 | 连接对象并充当代理 | ✔ |
| 纪念 | 生成一个不透明的令牌,可用于返回以前的状态 | ✔ |
| 观察者 | 提供通知事件/数据更改的回调 | ✔ |
| 注册表 | 跟踪给定类的所有子类 | ✔ |
| 状态 | 根据其内部状态封装同一对象的不同行为 | ✔ |
| 战略 | 使算法的行为可以在运行时选择 | ✔ |
| 模板 | 定义一个骨架类,该类别为子类辩护 | ✔ |
| 游客 | 将算法与操作的对象分开 | ✔ |
| 口译员 | 解释您自己的语言或组成的命令 | ✔ |
同步模式
| 图案 | 描述 | 地位 |
|---|
| 条件变量 | 提供了线程临时放弃访问的机制,以便等待某种条件 | ✘ |
| 锁定/静音 | 在资源上执行相互排斥限制以获得独家访问 | ✘ |
| 监视器 | 静音和条件变量模式的组合 | ✘ |
| 读写锁 | 允许并行读取访问,但仅在写操作中独家访问到资源 | ✔ |
| 信号 | 允许控制对公共资源的访问 | ✔ |
并发模式
| 图案 | 描述 | 地位 |
|---|
| n级 | 防止过程进行,直到所有n个过程都到达障碍 | ✔ |
| 有限的并行性 | 完成具有资源限制的大量独立任务 | ✔ |
| 播送 | 同时将消息同时传递给所有收件人 | ✘ |
| Coroutines | 允许在某些位置暂停和恢复执行的子例程 | ✘ |
| 发电机 | 一次产生一个值 | ✔ |
| 反应堆 | 交付服务请求同时交付给服务处理程序,并将其同步分配给关联的请求处理程序 | ✘ |
| 并行性 | 完成大量独立任务 | ✔ |
| 生产者消费者 | 将任务与任务执行分开 | ✔ |
消息模式
| 图案 | 描述 | 地位 |
|---|
| 粉丝 | Funnels任务到工作汇(例如服务器) | ✔ |
| 粉丝 | 在工人中分发任务(例如生产者) | ✔ |
| 期货和应许 | 充当结果的位置持有人,最初是为了同步目的而未知的 | ✔ |
| 发布/订阅 | 将信息传递给订阅主题的收件人的集合 | ✔ |
| 推和拉 | 将消息分发给在管道中安排的多个工人 | ✘ |
稳定模式
| 图案 | 描述 | 地位 |
|---|
| 舱壁 | 强制执行故障遏制原则(即防止级联失败) | ✘ |
| 断路器 | 当请求可能失败时停止请求流 | ✔ |
| 最后期限 | 一旦响应的概率较低,允许客户停止等待响应(例如等待10秒钟的页面刷新) | ✔ |
| 失败 | 在请求开始时检查所需资源的可用性,如果不满足要求,则会失败 | ✘ |
| 握手 | 询问组件是否可以承担更多负载,如果不能,请拒绝请求 | ✘ |
| 稳定状态 | 对于累积资源的每个服务,其他一些服务都必须回收该资源 | ✘ |
分析模式
成语
| 图案 | 描述 | 地位 |
|---|
| 功能选项 | 允许使用理智的默认值和惯用性替代创建干净的API | ✔ |
反国立
模式实现
Go-Pattern-evarmples