
Go实现设计模式
文章平均质量分 79
TLpigff
这个作者很懒,什么都没留下…
展开
-
Go实现设计模式系列(11)——Go实现桥接模式
Bridge Pattern(桥接模式)桥接模式最主要的特点就是松耦合。这里举一个比较好懂的例子。我们每个人的家里都有一些电器(比如灯泡和风扇),每个电器都是由开关控制,开关也有不同的种类(圆形的,方形的,或者是很小的那种开关),它们之间通过线路连接,可以把线路理解为它们之间的桥梁。在任何情况下,我们可以在不更改线路(桥梁)的情况下,对电器或者开关做更换,比如我们可以在不更换开关的情况下,换一个新的灯泡,也可以在不更换灯泡的情况下,更换开关(比如从方形开关换成圆形开关),甚至可以把灯泡和风扇互换,只要原创 2020-09-15 10:45:20 · 808 阅读 · 1 评论 -
Go实现设计模式系列(10)——Go实现适配器模式
Adapter Pattern(适配器模式)适配器模式是作为两个不兼容的接口之间的桥梁,它结合了两个独立接口的功能。举个例子,生活中无处不在的转换头其实就是一种适配器,例如读卡器,内存条插在读卡器上,再将读卡器插在笔记本插槽上,这样笔记本就可以读取内存条了;再例如type-c孔到USB孔的转接头,macbook pro笔记本上的typec孔,我们经常要连键盘,而键盘是需要USB孔才可以插入的,这个时候就需要一个typec转USB的转接头,这就是一个典型的适配器。适配器模式用于转换一种形态到另一种形态原创 2020-08-26 17:19:42 · 1140 阅读 · 0 评论 -
Go实现设计模式系列(9)——Go实现原型模式
Prototype Pattern(原型模式)原型模式用于创建重复的对象,同时又能保证性能。一般是通过实现 Clone()接口来实现。注意原型模式返回的一定是新的内存实例当直接创建对象的代价比较大时,使用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。五大要素来看看原型模式的五大要素:模式名称:原型模式目的(What):快速创建一个需要创建的对象的克隆,由此返回一个新的内存实原创 2020-08-03 16:48:36 · 1200 阅读 · 0 评论 -
Go实现设计模式系列(8)——Go实现对象池模式
Object Pool Pattern(对象池模式)对象池模式,对象被预先创建并初始化后放入对象池中,对象提供者,对象提供者就能利用已有的对象来处理请求,减少对象频繁创建所浪费的资源。例如数据库的连接池等等,基本都是创建后就被放入连接池中,后续的查询请求使用的都是连接池中的对象,从而加快了查询速度(不然每次查询都需要重新创建数据库连接对象,比较浪费)。一句话解释,对象池模式下,程序在一开始就创建好了一批可用对象供使用这种模式下,一般有两种角色,即对象池管理者和对象池用户。对象池管理者负责管理整原创 2020-08-03 15:51:17 · 962 阅读 · 0 评论 -
Go实现设计模式系列(7)——Go实现建造者模式
Builder Pattern(建造者模式)建造者模式使用多个简单地对象一步一步地构建一个复杂的对象。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。五大要素来看看建造者模式的五大要素:模式名称:建造者模式目的(What):将一个复杂对象的构建分离成多个简单对象的构建组合解决的问题(Why):当一个复杂对象的创建过程基本不变(组合方式),但是该对象的各个部件各自创建的算法经常在变的时候。例如一个复杂对象的创建工作,通常由各个部分的子对象用一定的原创 2020-07-31 16:27:11 · 610 阅读 · 0 评论 -
Go实现设计模式系列(6)——Go实现单例模式
Singleton Pattern(单例模式)单例模式也是最常见的设计模式之一,这种模式下永远保证返回相同内存位置的同一个实例对象。单例模式一般与两种基础模式,懒汉模式与饿汉模式。懒汉模式即在用到对象的时候再去创建对象,这样如果不用的话就不需要创建该实例对象,是一种时间换空间的做法,需要考虑的是多线程并发调用而导致的会创建多个实例的问题,需要用到互斥锁。饿汉模式即在初始化的时候就实例化好对象,是一种空间换时间的做法,不需要考虑多线程并发调用的问题。Go实现单例模式最常用的有两种模式:采用sy原创 2020-07-29 13:20:15 · 873 阅读 · 0 评论 -
Go实现设计模式系列(5)——Go实现抽象工厂模式
Abstract Factory Pattern(抽象工厂模式)在抽象工厂模式中创建了一个超级工厂,它提供了创建抽象工厂的接口。比如现在有一个超级工厂,它可以根据传入的参数创建不同的抽象工厂实例。抽象工厂是一个接口,它提供了一组生产一些列产品的方法。比如现在有一个抽象工厂接口,它提供了生产手机和Ipad两种产品的方法。一些普通的工厂实现了这个抽象工厂接口,这就意味着它们都可以生产手机与Ipad,例如华为工厂,小米工厂。只不过华为生产的是华为手机和华为Ipad,小米生产的是小米手机和小米Ipad。抽原创 2020-07-29 11:22:57 · 837 阅读 · 0 评论 -
Go实现设计模式系列(4)——Go实现工厂方法模式
Factory Method Pattern(工厂方法模式)工厂方法模式解决了简单工厂模式的缺点。之所以能够解决这种缺点,是因为工厂方法模式把具体产品(实例)的创建放到了具体的产品工厂去做。举个例子,现在有一个玩具工厂,在简单工厂模式中,它分别生产拼图和弹珠两种玩具,这两种玩具都是由这个玩具工厂一手创建的。而在工厂方法模式中,相当于玩具工具工厂底下还有两个子工厂,分别是拼图工厂和弹珠工厂,拼图和弹珠两种玩具的创建由这两个子工厂管理。在这种情况下,玩具工厂只是一个接口,包含了New()方法,而拼图工厂原创 2020-07-28 11:29:39 · 512 阅读 · 0 评论 -
Go实现设计模式系列(3)——Go实现简单工厂模式
Simple Factory Pattern(简单工厂模式)简单工厂模式属于创建型模式,不会对外暴露创建对象的逻辑,并且我们通过一个共同的接口来创建不同的对象。形象地理解就是,使用同一个工厂,可以创建出不同的产品,比如玩具工厂,可以生产出不同的玩具。五大要素来看看New模式的五大要素:模式名称:简单工厂模式目的(What):定义一个创建具体对象的工厂,有工厂调用者自己决定创建哪个对象解决的问题(Why):当我们明确知道不同地条件下需要创建不同的对象时,使用这种模式解决方案(How):通原创 2020-07-28 10:52:29 · 550 阅读 · 0 评论 -
Go实现设计模式系列(2)——Go实现New模式
New Pattern(New模式)这几乎是我们最常用的模式,因为太常用了,以致于我们并没有它当成一种模式。New 模式属于创建型模式的一种,作为最基础的创建型模式而被我们广泛使用五大要素来看看New模式的五大要素:模式名称:New模式目的(What):使用类似New()/new()/NewXXX()之类的方法,返回一个实现了某个接口的对象的引用(地址)解决的问题(Why):当我们想简单获取实现某个接口的对象的引用时,使用该模式解决方案(How):New()/new()/NewXXX(原创 2020-07-28 10:13:37 · 626 阅读 · 0 评论 -
Go实现设计模式系列(1)——设计模式介绍
设计模式就是老一辈的程序员们在写代码的时候,在特定环境下,对重复出现的一系列编程问题,总结出来的一套写代码的模式。在针对某种问题时,采用特定的设计模式实现,往往能够让写出来的代码更好看,更有效,更可靠,写代码的速度更效率。原创 2020-07-27 11:41:07 · 1150 阅读 · 0 评论