当前位置: 首页 > wzjs >正文

同城信息网站建设天津高自考网站建设与实践2017

同城信息网站建设,天津高自考网站建设与实践2017,软件项目设计方案,天元建设集团有限公司青岛分公司张德平不干了Golang学习笔记_29——抽象工厂模式 Golang学习笔记_30——建造者模式 Golang学习笔记_31——原型模式 文章目录 一、核心概念二、模式结构三、模式特点四、实现方式对比五、适用场景六、与其他模式的对比1. 与装饰器模式2. 与外观模式3. 与创建型模式(工厂/原型&am…

Golang学习笔记_29——抽象工厂模式
Golang学习笔记_30——建造者模式
Golang学习笔记_31——原型模式


文章目录

      • 一、核心概念
      • 二、模式结构
      • 三、模式特点
      • 四、实现方式对比
      • 五、适用场景
      • 六、与其他模式的对比
        • 1. 与装饰器模式
        • 2. 与外观模式
        • 3. 与创建型模式(工厂/原型)
      • 七、Go实现示例
      • 八、最佳实践建议


一、核心概念

定义:将一个类的接口转换成客户端期望的另一个接口,使原本因接口不兼容而无法协同工作的类能一起工作。

核心比喻:类似于电源插头转换器,让美标插头能在欧标插座上使用。

双重角色

  1. 接口转换器:解决新旧组件接口不兼容问题
  2. 包装器:通过包装已有对象提供新接口

二、模式结构

适配器类图

@startuml
class Target {+Request()
}class Adaptee {+SpecificRequest()
}class Adapter {-adaptee: Adaptee+Request()
}Target <|-- Adapter
Adapter o-- Adapteenote right of Adaptee: 需要被适配的现有类
note left of Target: 客户端期望的接口
@enduml

三、模式特点

优点

  1. 兼容性:解决接口不兼容问题,提高系统扩展性
  2. 复用性:无需修改现有代码即可复用遗留系统
  3. 透明性:对客户端隐藏适配过程
  4. 开闭原则:通过新增适配器类实现扩展,而非修改已有代码

缺点

  1. 复杂度增加:过多适配器会降低代码可读性
  2. 性能损耗:多层包装可能带来调用链增长(通常可忽略)
  3. 设计妥协:可能掩盖接口设计不合理的问题

四、实现方式对比

类型类适配器对象适配器
实现方式多重继承(Go不支持)组合
灵活性适配特定类适配类及其子类
代码侵入性需要修改适配器继承关系无侵入
Go适用性不可用推荐方式

五、适用场景

  1. 系统整合:对接第三方库/服务时接口不匹配
  2. 版本升级:新旧系统兼容过渡
  3. 接口标准化:统一多个相似功能但接口不同的组件
  4. 跨平台开发:不同平台API的适配封装
  5. 测试驱动:创建测试替身(Test Double)

六、与其他模式的对比

1. 与装饰器模式
  • 相同:都使用包装技术
  • 差异
    • 适配器:改变被包装对象的接口
    • 装饰器:增强接口功能,不改变接口
2. 与外观模式
  • 相同:都是包装已有对象
  • 差异
    • 适配器:解决单个组件的接口转换
    • 外观:简化复杂子系统的接口
3. 与创建型模式(工厂/原型)
  • 关注点
    • 适配器:接口转换(结构型模式)
    • 创建型模式:对象创建机制
  • 协同使用:常与抽象工厂结合,创建适配器实例

七、Go实现示例

package adapter_demoimport ("fmt"
)// 旧接口
type OldLogger interface {oldLogInfo(message string, level string)
}// 目标接口(新日志)
type Target interface {newLogInfo(message string)
}// 源接口(旧日志)
type oldLogger struct {Message stringLevel   string
}func (ol *oldLogger) oldLogInfo(message string, level string) {fmt.Println("old Logger: " + message)fmt.Println("old Logger: " + level)
}func (l *oldLogger) newLogInfo(message string) {fmt.Println("new Logger: " + message)fmt.Println("new Logger: " + l.Level)
}// 适配器
type LoggerAdapter struct {legacyLogger *oldLogger
}func (la *LoggerAdapter) newLogInfo(message string) {la.legacyLogger.newLogInfo(message)
}func test() {newLogger := &LoggerAdapter{legacyLogger: &oldLogger{Message: "",Level:   "INFO",},}newLogger.newLogInfo("Hello, World!")oldLogger := &oldLogger{}oldLogger.oldLogInfo("Hello, World!", "INFO")
}

输出结果

=== RUN   Test_test
new Logger: Hello, World!
new Logger: INFO
old Logger: Hello, World!
old Logger: INFO
--- PASS: Test_test (0.00s)
PASS

八、最佳实践建议

  1. 优先使用组合:Go推荐对象适配器实现
  2. 接口最小化:保持目标接口简洁
  3. 双向适配:需要时实现双向接口转换
  4. 适配器注册:结合工厂模式管理适配器实例
  5. 性能监控:关键路径注意多层适配带来的性能影响

通过适配器模式,我们能在保持系统架构整洁的同时,有效整合新旧组件,是应对系统演进和第三方集成的利器。实际应用中需权衡使用场景,避免过度设计。


文章转载自:

http://Y3tE5H5q.tpLht.cn
http://J9Jjkoh7.tpLht.cn
http://0meS8ESu.tpLht.cn
http://stZDgOE5.tpLht.cn
http://sfTKR6re.tpLht.cn
http://wcn5IDhX.tpLht.cn
http://d6ft9RkR.tpLht.cn
http://v5cE3igy.tpLht.cn
http://wUWtVvNp.tpLht.cn
http://JL0vq1qA.tpLht.cn
http://M5tB6HUJ.tpLht.cn
http://KtwYSkGB.tpLht.cn
http://bA0mcO6v.tpLht.cn
http://L4oGz2I6.tpLht.cn
http://1wfyk5EZ.tpLht.cn
http://ILw8VGhY.tpLht.cn
http://gV2Nthvv.tpLht.cn
http://OdEOPTh6.tpLht.cn
http://YKmKmfX6.tpLht.cn
http://5DuZq2qt.tpLht.cn
http://d7p7XBTy.tpLht.cn
http://0JUtmIJ4.tpLht.cn
http://363rFc4p.tpLht.cn
http://TeYqMUsX.tpLht.cn
http://vaCoSwSX.tpLht.cn
http://7QM91Mih.tpLht.cn
http://ZLh4pYDR.tpLht.cn
http://e2JSp9cj.tpLht.cn
http://HHYtikrB.tpLht.cn
http://IzflIKTy.tpLht.cn
http://www.dtcms.com/wzjs/682183.html

相关文章:

  • 在百度做网站推广怎么做wordpress清理缓存插件
  • 做网站在手机端预览乱码了各类最牛网站建设
  • 怎样做网站认证网站代理 登陆
  • 做网站找我图片商家做小程序怎么做
  • 百度网站权重排行wordpress点文字弹出层
  • 汽车网站页面布局设计代码转wordpress
  • 汕头网站制作专业免费软件视频
  • 重庆微信网站建设报价表开发公司与物业公司合同
  • 高端网站建设找哪个公司鞍山360推广
  • 邢台网站开发史上最全设计网站
  • 新钥匙网站建设沈阳城乡建设局官网
  • 视频网站如何优化网页实时翻译
  • pinterest官网入口南阳网站优化渠道
  • 律师在哪个网站做推广比较好北京seo公司优化网络可见性
  • 谁知道做网站的电话央视叫停校外培训机构
  • 网站被黑客入侵怎么办商标图案参考
  • 用凡科做的网站怎么下载电大网上作业代做网站
  • 同一ip大量访问网站山东网站备案号
  • 网站商城怎么做的网页设计教程 百度网盘
  • 开发网站企业fullpage做的网站
  • seo 哪些媒体网站可以发新闻个人网页是什么
  • 外贸公司网站建设费用报销网站建立的步骤
  • 济南营销型网站如何创建个人微信公众号
  • 杭州网站搭建网站备案前置审批表格
  • 多种不同产品的网站怎么做seo廊坊关键词优化
  • 深圳凌 网站开发中国肩章军衔图解
  • 温州做网站设计无线新闻台直播app下载
  • 平邑建设局网站首页什么网络游戏比较好玩
  • 个人适合做的网站临沂网站建设平台
  • 个人网站页面设计作品安装 wordpress多人