Android中大量使用建造者模式(Builder Pattern)的原因可以归结为以下几点:

devtools/2024/9/29 17:30:37/

1. 解耦对象的构建与表示

建造者模式将复杂对象的构建过程与其表示分离,这使得同样的构建过程可以创建不同的表示。在Android开发中,许多组件和视图需要配置多个属性和参数,通过建造者模式可以清晰地将这些属性的设置与对象的实际构造过程分开,使得代码更加模块化。

——说点我的理解,就是new对象里面构造函数里面有很多参数需要初始化,而实际使用的时候,不同的表示(这里理解为new出来的各个对象表示)需要初始化的参数不一,我build以后,调用对应的set接口,去set我需要的参数就行了,不需要参数初始化里面很多。

2. 避免构造方法参数过多

对于具有大量属性的对象,使用传统的构造方法创建对象可能会导致构造方法参数过多,参数顺序难以记忆和管理。而建造者模式通过链式调用(Chaining)设置属性,可以避免这一问题,使得代码更加清晰易读。例如,AlertDialog类通过AlertDialog.Builder来设置其多个属性,而不是将所有属性都放在AlertDialog的构造方法中。

——说点我的理解,这个比较浅显,就是new对象里面的参数太多了,会导致调用的时候,传参混乱容易出错。

3. 支持对象属性的变化

如果一个对象的属性有较高的变动性,使用建造者模式可以很方便地修改具体建造者的实现,而无需修改客户端的代码。这样可以降低耦合度,提高系统的可维护性和可扩展性。在Android开发中,UI组件的属性经常需要根据不同的需求进行调整,建造者模式为此提供了很好的支持。

——说点我的理解,在框架需要更新fwk这个类的构造函数,比如追加一个参数的时候,一堆app不用去改代码,也能正常兼容使用。

4. 良好的封装性

建造者模式将复杂对象的构建过程封装在建造者类中,外部代码只需要通过建造者类的接口来构建对象,而不需要知道对象内部的具体实现细节。这种封装性有助于隐藏复杂性,使得代码更加简洁和易于理解。

——说点我的理解,你关心你用的就行了,不需要关心我适配所有的函数怎么写的,但我就是这么一个好奇无聊的人,就想看代码怎么一行一行执行的,眼见为实。

5. 灵活性和可扩展性

建造者模式提供了灵活的构建流程,允许开发者根据需要逐步构建复杂对象。同时,由于建造者类和被构建的对象是分离的,因此可以很容易地添加新的构建步骤或修改现有的构建步骤,而不需要修改客户端代码。这种灵活性和可扩展性在Android开发中尤为重要,因为UI组件和应用程序逻辑经常需要根据新的需求进行调整和优化。

——说点我的理解,在框架需要更新fwk这个类的构造函数,比如追加一个参数的时候,一堆app不用去改代码,也能正常兼容使用。

6. 提高代码的可读性和可维护性

通过建造者模式构建的代码通常更加清晰和易于理解,因为每个构建步骤都是明确的,并且遵循一致的命名和调用规则。这有助于减少代码中的错误和遗漏,并提高代码的可维护性。在大型Android项目中,使用建造者模式可以显著提高代码质量和开发效率。

——说点我的理解,这个好理解,就跟我打扫卫生收纳一样,各种打包盒分门别类的打包。

综上所述,Android中大量使用建造者模式的原因主要包括解耦对象的构建与表示、避免构造方法参数过多、支持对象属性的变化、良好的封装性、灵活性和可扩展性,以及提高代码的可读性和可维护性。这些优点使得建造者模式成为Android开发中处理复杂对象构建问题的有力工具。


http://www.ppmy.cn/devtools/118797.html

相关文章

关于安科瑞分布式光伏监控系统 在某养殖场分布式光伏发电项目中的应用探讨-安科瑞 蒋静

摘 要:2024年全国开会期间,国家能源局有关负责人表示,在能源领域,发展新质生产力的新动能关键在于持续推动新能源和可再生能源高质量跃升发展,其中发展分布式新能源就是主要工作之一。分布式光伏以其灵活且环保的发电特…

航顺芯片HK32MCU受邀出席汽车芯片国产化与技术创新闭门研讨会

[中国,北京,2024年9月21日]近日,深圳市航顺芯片技术研发有限公司(以下简称“航顺芯片”)产品总监郑增忠受邀出席由中国设备管理协会新能源汽车产业发展促进中心主办的“汽车芯片国产化与技术创新闭门研讨会”。 会上航…

道一云·七巧和金蝶云星空单据接口对接

道一云七巧和金蝶云星空单据接口对接 对接系统金蝶云星空 金蝶K/3Cloud结合当今先进管理理论和数十万家国内客户最佳应用实践,面向事业部制、多地点、多工厂等运营协同与管控型企业及集团公司,提供一个通用的ERP服务平台。K/3Cloud支持的协同应用包括但不…

天龙八部怀旧单机微改人面桃花+安装教程+GM工具+虚拟机一键端

今天给大家带来一款单机游戏的架设:天龙八部怀旧单机微改人面桃花。 另外:本人承接各种游戏架设(单机联网) 本人为了学习和研究软件内含的设计思想和原理,带了架设教程仅供娱乐。 教程是本人亲自搭建成功的&#xf…

Qt --- Qt窗口

一、前言 前面学习的所有代码,都是基于QWidget控件。QWidget更多的是作为别的窗口的一个部分。 Qt中的QMainWindow就是窗口的完全体 Menu Bar菜单栏 Tool Bar Area 工具栏,类似于菜单栏,工具栏本质上就是把菜单中的一些比较常用的选项&…

10.1软件工程知识详解上

软件工程概述 软件开发生命周期 软件定义时期:包括可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的总目标,具体可分成问题定义、可行性研究、需求分析等。软件开发时期:就是软件的设计与实现,可分成…

初始docker以及docker的基本使用!!!

文章目录 虚拟化技术Docker/podman 命令通用命令查看docker 当前版本管理docker运行 镜像操作[image]列出本地所有镜像拉取镜像删除镜像把docker中的镜像打包成文件把镜像文件加载到docker中上传镜像 容器操作[container]创建容器docker run的参数选项列出所有容器启动容器停止…

递归手撕,JSON 字符串化和解析,加权树结构的字符串解析对象,解析并返回DOM 树结构(DOMParser),解析带有层级的文本

目录 1 JSON 字符串化和解析 2 加权树结构的字符串解析对象 3. 解析并返回DOM 树结构 4. 解析带有层级的文本 1 JSON 字符串化和解析 // <!-- 实现一个函数&#xff0c;能够将自定义格式的字符串转换为 JSON 对象。 // 例如&#xff0c;给定字符串 name: "A…