好久没有更新博客了,最近也是在忙着充电,今天这篇博客开始,我们来了解一下设计模式。
设计模式
那什么是设计模式呢先来看看我从百科上copy下来的概念吧。
设计模式/软件设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
恩,大概的意思就是在撸码界由码神们总结的、能够解决软件设计中反复出现的问题的、由大多数人任何的设计方式,也可以说是一种编码规则。
初始编码我们总是按照自己的套路来写代码,等项目的代码量庞大了,需求又要改了,突然发现尼玛这个改起来好麻烦,好多文件要动,为了适合新的需求改动这个文件可能会对其他的业务逻辑产生影响,改动这个文件会不会引入bug系列的问题摆在了我们眼前,头疼、迷茫,有木有一种重新写一遍的冲动了,假如你遇到了这种情况,设计模式可能会拯救你一部分。
但,对于设计模式还有很多人更多沉迷于设计模式中,每写几行代码,都要考虑考虑-这里是不是需要个啥模式! 记住,模式是为了方便我们解决问题而总结出来的一套编码规则,并不是我们不用设计模式代码的扩展性就一定差,选择使用模式还是要慎重,大多数情况下还是要依靠需求的情景来考虑需不需要这种模式,在决定使用之前一定要考虑好为什么要用这种模式。
策略模式
好了,扯了这么多蛋,下面开始进入主题,进来我们首先来介绍一下策略模式。首先来看一下定义,
定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化。
恩,这个定义看起来还是可以的,不像一些定义非得整的人看不懂才叫定义,随便还算好理解,不过我们还是要引入一个结构图来更加清晰的认识它。
这个工厂方法会根据不用的类型来返回不同的策略实现,当然,哪天我们需要新增新的策略,我们只需要在这个函数中增加对应的类型判断就ok。
现在策略貌似已经完成了,接下来我们来看看主流程代码,一个Computer,
这个Computer中有三个参数,和当然是我们要操作的数了,strate是我们要设置的策略,可能是上面介绍的,也有可能是其他的,在main函数中我们会调用方法来设置要使用的策略,方法会执行运算,最后返回运算的结果,可以看到在中我们将计算的功能委托给了。
貌似一切准备就绪,我们就来编写main的代码吧。
首先我们要从命令行读取要使用的策略类型和两个操作数,在main函数中,我们初始化这个结构体,并将输入的操作数赋值给的和,接下来我们根据策略类型通过调用函数来获取一个策略,并调用的方法给设置上面获取到的策略,最后执行方法计算结果,最后打印。
就是这么简单,现在我们在命令行定位到所在的目录,并执行一下命令来编译文件
go build main.go
继续执行命令
main -type d -num1 4 -num2 2
来尝试一下使用加法策略操作4和2这两个数,来看看结果如何,
结果也是正确的。
总结
策略模式还是算比较容易理解的,策略模式的核心就是将容易变动的代码从主逻辑中分离出来,通过一个接口来规范它们的形式,在主逻辑中将任务委托给策略。这样做既减少了我们对主逻辑代码修改的可能性,也增加了系统的可扩展性。一定要记得哦,我们的代码要往对扩展开发,对修改关闭这条设计原则上努力!
文章知识点与官方知识档案匹配,可进一步学习相关知识Go技能树首页概览1915 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!