Go 设计模式|项目依赖耦合度太高?可以用适配器做下优化

网站建设3年前发布
13 00

大家好,这里是每周都在陪你进步的网管~!今天介绍一个在我们在开发做项目时,经常会用到的设计模式适配器模式。,适配器模式(Adapter Pattern)又叫作变压器模式,它的功能是将一个类的接口变成客户端所期望的另一种接口,从而使原本因接口不匹配而导致无法在一起工作的两个类能够一起工作,属于结构型设计模式。,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。,我们用UML类图看一下适配器模式的构成,Go 设计模式|项目依赖耦合度太高?可以用适配器做下优化,类图-适配器模式的结构,适配器模式中的角色构成如下:,通过上面的类图里各个角色类的关联我们可以看到,客户端代码只需通过接口与适配器交互即可, 无需与具体的适配器类耦合。 这样, 如果有需求我们就可以向程序中添加新类型的适配器而无需修改已有适配器实现。 这在我们的项目需要替换服务类的时候很有用,符合SOLID原则里的开闭原则。,我们先来看看用代码怎么实现适配器模式,稍后再给大家演示一个实践性更高的例子。,客户端代码直接通过适配器来间接使用被适配对象的功能,解决了两者不兼容的问题。,为什么建议引入依赖库的时候使用适配器模式?项目使用第三方类库的时候,防止未来有更换同等功能类库的可能,一般会推荐使用适配器模式对三方类库做一层封装,这样未来需要用同等功能的服务类进行替换时,实现一个新的适配器包装服务类即可,不需要对已有的客户端代码进行更改。,使用适配器模式,在项目中接入依赖库,这样以后需要替换成其他同等功能的依赖库的时候,不会影响到项目中的通过适配器使用依赖库功能的代码。,下面举一个用适配器适配redigo库为项目提供Redis Cache 功能的例子。,首先我们定义适配器接口,未来所有 Cache 类的适配器需要实现此接口。,这里为了简洁只定义了三个简单的存取Cache的方法,实际使用时我们可以把常用的Cache操作都定义成接口的方法。,定义适配器实现类, RedisCache 类型会Cache接口,同时我们为RedisCache提供一个工厂方法,在工厂方法里进行 Redis 链接池的初始化,接下来为RedisCache实现 Cache 适配器接口的方法,这三个方法实现分别对应Redis的 SET、GET和MGET操作。,客户端在使用Cache时,是直接用Cache接口中定义的方法跟适配器交互,由适配器再去转换成对三方依赖库redigo的调用完成Redis操作。,Go 设计模式|项目依赖耦合度太高?可以用适配器做下优化,公众号「网管叨bi叨」发送关键字【设计模式】领取。,适配器模式和代理模式同属于结构型的设计模式,他们两个在类结构上也非常相似,都是由一个包装对象持有原对象,把客户端对包装对象的请求转发到原对象上。那么这两个模式有什么不同呢?我们怎么区分自己使用的是适配器还是代理模式?,适配器和代理模式的区别:,适配器模式的优点是适配器类和原角色类解耦,提高程序的扩展性。在很多业务场景中符合开闭原则。不改变原有接口,却还能使用新接口的功能。不过适配器的编写过程需要结合业务场景全面考虑,同时也可能会增加系统的复杂性。,今天的文章就到这里啦,喜欢还请点个关注,每周更新最有实用性的编程知识。

© 版权声明

相关文章