热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

23种设计模式,每天一种设计模式

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥
创建型模式,共五种: 工厂方法模式抽象工厂模式单例模式建造者模式原型模式
结构型模式,共七种: 适配器模式装饰器模式代理模式外观模式桥接模式组合模式享元模式
行为型模式,共十一种: 策略模式模板方法模式观察者模式迭代子模式责任链模式命令模式备忘录模式状态模式访问者模式中介者模式解释器模式
 
今天说结构型设计模式里的 桥接模式
 
结构型设计模式,其实就是通过封装或者组合的方式,优化改进代码结构
 
目的:解决多维度的变化
途径:变化封装,哪里变化封装哪里
缺点:代码复杂化,对于使用端需要了解更多细节
 
 
使用场景:有3个手机:苹果诺基亚OPPO,它们的系统分别是IphoneWinphoneAndroid
    苹果手机对应iphone系统,
    诺基亚手机对应winphone系统,
    oppo手机对应android系统
 
那么: 苹果Class里实现Iphone
    诺基亚Class里实现Winphone
    OPPOClass里实现Android
 
如果业务增加,
    苹果手机想拥有winphone系统和android系统,
    诺基亚手机想拥有iPhone系统和android系统,
    oppo手机想拥有iPhone系统和winphone系统,
 
那么: 新增苹果2Class里实现winphone
    新增苹果3Class里实现android
    新增诺基亚2Class里实现iPhone
    新增诺基亚3Class里实现android
    新增OPPO2Class里实现iPhone
    新增OPPO3Class里实现winphone
 
那么问题来了,类的数量=手机品牌数量M * 系统数量N,  如果手机品牌继续增加,系统数量也继续增加,那么类的数量将是成倍数的增加,如果再引入美版、港版、大陆版,那么类的数量将继续成倍增加
 
为了解决多维度的变化,就诞生了桥接模式来解决这类问题
把系统和手机还有版本分离开
把系统封装成接口,由Iphone、winphone、android去实现它
把手机封装成接口,由苹果、诺基亚、OPPO去实现它
把版本封装成接口,由美版、港版、大陆版去实现它
 
这样的话,哪个手机想实现什么系统,想拥有什么版本,直接在上端灵活的去调用即可,既方便扩展,同时,类的数量=手机品牌数量M +系统数量N
 
总结:桥接模式通过变化封装,解决多维度的变化,既方便扩展,又减少类的数量,同时也实现了解耦,但是缺点也很明显,就是代码复杂了,使用端需要了解更多的细节(知道手机的品牌,还要知道手机的系统和手机的版本,才能去灵活调用)。所以,如果简单的逻辑,直接用即可,不必刻意使用桥接模式去解决问题。
 
以上是本人通过学习,去理解和总结的,如果有什么不当之处,还请大牛指正!
 
 
    

推荐阅读
  • 本文将详细介绍如何使用剪映应用中的镜像功能,帮助用户轻松实现视频的镜像效果。通过简单的步骤,您可以快速掌握这一实用技巧。 ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • andr ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 三星W799在2011年的表现堪称经典,以其独特的双屏设计和强大的功能引领了双模手机的潮流。本文详细介绍其配置、功能及锁屏设置。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 几何画板展示电场线与等势面的交互关系
    几何画板是一款功能强大的物理教学软件,具备丰富的绘图和度量工具。它不仅能够模拟物理实验过程,还能通过定量分析揭示物理现象背后的规律,尤其适用于难以在实际实验中展示的内容。本文将介绍如何使用几何画板演示电场线与等势面之间的关系。 ... [详细]
  • 本文介绍如何通过Windows批处理脚本定期检查并重启Java应用程序,确保其持续稳定运行。脚本每30分钟检查一次,并在需要时重启Java程序。同时,它会将任务结果发送到Redis。 ... [详细]
  • MySQL中枚举类型的所有可能值获取方法
    本文介绍了一种在MySQL数据库中查询枚举(ENUM)类型字段所有可能取值的方法,帮助开发者更好地理解和利用这一数据类型。 ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • 本文详细介绍了MicroATX(也称Mini ATX)和MATX主板规格,探讨了它们的结构特点、应用场景及对电脑系统成本和性能的影响。同时,文章还涵盖了相关操作系统的实用技巧,如蓝牙设备图标删除、磁盘管理等。 ... [详细]
author-avatar
李纯皓_922
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有