/design-pattern-go

设计模式go语言实现

Primary LanguageGoMIT LicenseMIT

go 设计模式

前言

设计模式不是银弹,它不能解决所有问题,它甚至跟设计都沾不上边--设计模式只是解决特定类型问题的特定方法,换句话说,设计模式不是用来让你学习如何设计代码,而是如何解决问题的“方法论”。评判解决方法好坏的核心指标只有一个:是否对扩展开放,对修改关闭。

扩展的方式基于对问题的理解,解决问题的关键在于分离问题中的变和不变,让变和不变解耦才是设计模式的最终目的,创建型设计模式分离了对象的创建和使用,结构型设计模式分离了功能和实现,行为型设计模式分离了调用者和被调用者之间的关系。然而不幸的是,变和不变并不是永恒不变的,只能在现有的情况下做出最适合的方案--然后在适当的时候重构。

在这里,我会按照以下结构介绍每一种设计模式:

  1. 标题
  2. 描述场景
  3. 第一版代码
  4. 分析存在的问题
  5. 解决问题和实现代码
  6. 代码目录

目录

  1. 访问者模式
  2. 建造者模式
  3. 命令模式
  4. 装饰者模式