首页 > 其他分享 >一起学习 Go 语言设计模式之设计模式概述

一起学习 Go 语言设计模式之设计模式概述

时间:2022-10-22 23:32:25浏览次数:64  
标签:对象 Pattern 代码 模式 概述 创建 Go 设计模式

一起学习 Go 语言设计模式之设计模式概述_设计模式


我的语言之局限,即我的世界之局限。 —— Ludwig Wittgenstein(1889-1951)

设计模式的概念

模式是在特定环境下人们解决某种重复出现问题的一套成功有效的解决方案。

设计模式(Design Pattern)是软件设计中常见问题的典型解决方案。它们就像能根据需求进行调整的预制蓝图,可用于解决代码中反复出现的设计问题。

设计模式是一套被反复使用的、多数人知晓的、经过分类编目的代码设计经验的总结,使用设计模式是为了可以重用代码,让代码更容易被他人理解并且提高代码的可靠性

设计模式与方法或库的使用方式不同,你很难直接在自己的程序中套用某个设计模式。模式并不是一段特定的代码,而是解决特定问题的一般性概念。

设计模式的分类

《设计模式:可复用面向对象软件的基础》一书中讨论了 23 种不同的设计模式,并根据不同的目标将它们分为以下 3 类:

  1. 创建型:即创建对象的方式。涉及隔离对象创建的细节,以使代码不依赖于对象的类型 ,这样在增加新对象类型时就不必做任何修改。增加已有代码对的灵活性和可复用性
  2. 结构型:即如何设计满足特定项目约束的对象,如何将对象和类组装成较大的结构。这类设计主要围绕着这些对象和其他对象间的关联方式,以保证系统的变化不会导致这些关联方式的变化。保证结构的灵活和高效。
  3. 行为性:指处理程序中特定类型操作的对象。这些对象封装了要执行的流程,例如解释某种语言,满足某个条件,在序列中移动(比如通过迭代器),或者实现某种算法。负责对象间的高效沟通和职责委派。

创建型模式

创建型模式(Creational Pattern)关注对象的创建过程,将对象的创建和使用分离,在使用对象时无须关心对象的创建细节,从而降低系统的耦合度,让设计方案更易于修改和扩展。

创建型模式的不同解决方案都是为了解答 3 个问题:

  1. 创建什么(What)
  2. 由谁创建(Who)
  3. 何时创建(When)

GoF 设计模式一书中包含 5 种创建型模式,而我们将学习 6 种创建型模式:

  • 单例模式(Singleton Pattern)
  • 简单工厂模式(Simple Factory Pattern)
  • 工厂方法模式(Factory Method Pattern)
  • 抽象工厂模式(Abstract Factory Pattern)
  • 原型模式(Prototype Pattern)
  • 建造者模式(Builder Pattern)

一起学习 Go 语言设计模式之设计模式概述_设计模式_02

结构型模式

结构型模式介绍如何将对象和类组装成较大的结构,并同时保持结构的灵活和高效。结构型模式有如下 7 种模式:

一起学习 Go 语言设计模式之设计模式概述_行为型模式_03

行为型模式

行为型模式(Behavioral Pattern)关注系统中对象之间的交互,研究系统在运行时对象之间的相互通信与协作,进一步明确对象的职责。行为型模式不仅仅关注类和对象本身,还重点关注它们之间的相互作用和职责划分。

一共有如下 11 种模式:

一起学习 Go 语言设计模式之设计模式概述_行为型模式_04

总结

本文总结了设计模式的概念与分类,并分别展示给读者 3 大类设计模式中包含的不同设计模式,今后将学习每个设计模式,以及他们之间的关系,敬请期待!

参考链接:

  • 《设计模式的艺术》,作者:刘伟

希望本文能对你有所帮助,如果喜欢本文,可以点个关注.下一篇文章见!

宇宙古今无有穷期,一生不过须臾,当思奋争。

标签:对象,Pattern,代码,模式,概述,创建,Go,设计模式
From: https://blog.51cto.com/yuzhou1su/5786212

相关文章

  • Django-入门
    目录-Django版本--5种转换器--自定义转换器--级联更新级联删除-Django安装-Django基本操作--终端命令操作---创建Django项目---启动Django项目---创建功能模块......
  • C语言中的goto语句及简单运用
    一.概述C语言中提供了可以随意滥用的goto语句和标记跳转的标号。goto语句允许把控制无条件转移到同一函数内的被标记的语句。从理论上goto语句是没有必要的,实践中没有goto语......
  • golang中的字符串
    0.1、索引https://waterflow.link/articles/16664498749741、字符串编码在go中rune是一个unicode编码点。我们都知道UTF-8将字符编码为1-4个字节,比如我们常用的汉字,UTF-......
  • SSM概述
    SSM概述基本概念SSM=Spring+SpringMVC+MyBatisSpring简单来说,就是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。其中IOC可以说是SSM的核心之一。SpringMVC......
  • golang中的字符串
    0.1、索引https://waterflow.link/articles/16664498749741、字符串编码在go中rune是一个unicode编码点。我们都知道UTF-8将字符编码为1-4个字节,比如我们常用的汉字,UTF......
  • 【C语言】函数的概述、函数的好处、库函数、语法原型。
    ......
  • Go语言基本语法
    7.4数组的引入packagemainimport"fmt"funcmain(){varscores[5]intscores[0]=95scores[1]=89scores[2]=92scores[3]=96s......
  • golang postman api(environments)
    获取所有environmentspackagemainimport("fmt""net/http""io/ioutil")funcmain(){url:="https://api.getpostman.com/environments"method:="GET"clien......
  • 2流高手速成记(之四):SpringBoot整合redis及mongodb
    最近很忙,好不容易才抽出了时间,咱们接上回上次我们主要讲了如何通过SpringBoot快速集成mybatis/mybatis-plus,以实现业务交互中的数据持久化,而这一切都是基于关系型数据库(SQ......
  • Golang:3.5、Golang 指针
    3.5、Golang指针指针取地址:&取值:*指针地址:每一个变量都有一个地址,地址代表变量在内存中的位置Go语言中的值类型(int、float、bool、string、array、struct)对应的指......