go语言设计模式|青训营笔记

92 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第2篇笔记 下面是我总结到的几种设计模式,并且还进行了详细的分类。

创建型模式

  • 抽象工厂模式:提供一个接口用于创建相关对象的家族;
  • Builder模式:使用简单的对象来构建复杂的对象;
  • 工厂方法模式:一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中;
  • 对象池模式:实例化并维护一组相同类型的对象实例;
  • 单例模式:限制类的实例,保证一个类只有一个实例。

结构模式

  • 适配器模式:适配另一个不兼容的接口来一起工作;
  • 桥接模式:将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化;
  • 合成模式:将对象组织到树中,用来描述树的关系;
  • 装饰模式:给一个静态或动态对象添加行为;
  • 门面(Facade)模式:为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用;
  • Flyweight模式:运用共享技术有效地支持大量细粒度的对象;
  • MVC模式:是模型(model)-视图(view)-控制器(controller)的缩写,将一个应用程序划分成三个相互关联的部分,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
  • 代理模式:为其他对象提供一种代理以控制对这个对象的访问。

行为模式

  • 责任链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系;
  • 命令模式:就是客户端发布一个命令(也就是“请求”),而这个命令已经被封装成一个对象。即这个命令对象的内部可能已经指定了该命令具体由谁负责执行;
  • 中介(Mediator)模式:用一个中介对象来封装一系列关于对象交互行为;
  • 观察者模式:对象间的一种一对多的依赖关系,以便一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动刷新;
  • 注册(Registry)模式:跟踪给定类的所有子类;
  • 状态模式:基于一个对象的内部状态,给相同对象提供多种行为;
  • 策略模式:定义一系列算法,并将每一个算法封装起来,而且使它们可以相互替换;
  • 模板(Template)模式:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤;
  • 访问者模式:表示一个作用于某对象结构中的各元素的操作,它使开发者可以在不改变各元素类的前提下定义作用于这些元素的新操作。