Android中Builder类是什么及作用?Notification.Builder使用疑问咨询
一、什么是Android里的Builder类?它的用途是什么?
Builder本质上是建造者设计模式在Android中的实现,专门用来解决「复杂对象创建」的痛点。你肯定遇到过这种情况:某个类有一堆可选参数,要是用构造函数的话,要么写N个重载版本(参数多到离谱,自己都记不住),要么用一个超大构造函数,很多参数填null或者默认值,代码看起来乱糟糟的。
Builder模式就是来救场的:它把对象的创建过程拆分成多个步骤,你可以按需调用设置方法,最后调用build()方法生成最终的对象。好处太多了:
- 代码可读性拉满:链式调用的写法,一眼就能看出你给对象设置了哪些属性
- 避免无效对象:Builder会帮你做参数校验,确保创建出来的对象是符合要求的(比如某些必填属性没设置的话,build的时候会报错)
- 保证对象不可变性:一旦通过Builder创建出对象,就没法再修改它的属性,避免后续代码不小心改坏状态
二、NotificationManager里的Builder到底起什么作用?
就拿你贴的代码Notification n = new Notification.Builder(this)来说,这里的Notification.Builder就是专门用来构建Notification对象的工具。
为啥要用它?因为Notification的配置项超级多:小图标、大图标、标题、内容、提示音、震动模式、点击跳转的PendingIntent、锁屏显示方式、进度条... 要是不用Builder,你得面对一堆复杂的构造函数,或者直接给Notification的成员变量赋值(但很多属性是私有的,根本没法直接改)。
用Builder的话,你可以像搭积木一样一步步配置:
Notification notification = new Notification.Builder(this) .setSmallIcon(R.drawable.notification_icon) // 必填项,没有的话Notification不会显示 .setContentTitle("新消息提醒") .setContentText("你收到了一条未读消息") .setSound(Uri.parse("android.resource://com.example.myapp/raw/notification_sound")) .setPriority(Notification.PRIORITY_HIGH) .build(); // 最后一步生成完整的Notification对象
而且Builder还帮你处理了很多底层细节:比如自动适配不同Android版本的Notification特性,有些API在高版本才支持,Builder会帮你做兼容,不用你自己写一堆版本判断的代码。
简单说,Notification.Builder就是Android官方给你封装好的「Notification专属建造工具」,让你不用操心复杂的内部实现,只用专注于配置你需要的通知样式和行为就行~
内容的提问来源于stack exchange,提问作者IMAD UL-HASSAN

