将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
在用户不知道对象的建造过程和细节的情况下,可以直接创建复杂的对象。
优点:隐藏复杂的实现细节,易于解耦,方便扩展
缺点:当产品内部变化复杂,产品间差异较大时,不适合使用建造者模式
AlertDialog,Notification的Builder,StringBuilder, StringBuffer 等,这些都是我们日常开发中经常会用到的
下面结合一个实例来分析一下建造者模式的原理,以组装手机为例:
1. 首先是定义一个手机的基类,包含一些手机的共有属性和方法
2. 创建具体的实现类,如华为手机,实现了基类的抽象方法,并扩展增加了AI智能芯片
3. 创建一个建造者的基类,通过范型控制要构造的实例类型
4. 创建华为手机的建造者
5. 使用Builder构建手机实例,如下程序,构造不同型号的华为手机就非常方便了