java 设计模式 汽车 零件_Java设计模式学习篇(七)建造者设计模式

建造者模式:将一个复杂对象的创建和表示分离(有点类似与MVC模型),可以使得同样的创建过程可以创建不同的对象。

建造者模式将一个产品的内部表示和生产过程分离开,比如我们需要制造一个玩具,分为三大部分:制造头、身体、外形。

我们设计如下:

(1)定义玩具Toy接口

57345c8ae0b2959aa6516573f3704032.png

(2)定义一个具体类,实现Toy接口

f53df8fae2501cb297029c757db30a2e.png

(3)定义Builder类,用于生产玩具

d8db21d523eca3e4ab1e22fa3f60163e.png

(4)测试类

2862eaf10f7ff4c12fa1ce859caf671e.png

总结:

建造者模式将一个复杂对象的创建和表示分离,可以使得同样的创建过程可以创建不同的对象。

优点

(1)建造者设计模式比较独立,将对象本身与构建过程解耦;

(2)精准控制构建出的对象和内容,构造层和显示层是分离的;

(3)写法上更加优雅;缺点

(1)范围受限,不适合差异较大的对象;

(2)内部复杂多变,构造类相对会多;

思考1:建造者设计模式应用场景?

Java源码中的StringBuilder和StringBuffer中的append方法就是利用了建造者设计模式(稍微有点差别),它们继承自抽象类AbstractStringBuilder。AbstractStringBuilder类似于本例中的Toy接口(因为接口方法全是抽象的,类似于抽象类)。StringBuilder和StringBuffer相当于本例中的Toy接口的具体实现类(MyToyImpl类)。

思考2:建造者设计模式与抽象工厂模式有啥区别?

抽象工厂模式实现对产品家族的创建,一个产品家族是这样的一系列产品:具有不同分类维度的产品组合,采用抽象工厂模式则是不需要关心构建过程,只关心什么产品由什么工厂生产即可。而建造者模式的主要目的是通过组装零配件而产生一个新产品,两者的区别还是比较明显的。

例如:现代化的汽车工厂能够批量生产汽车,不同的工厂生产不同的汽车,宝马工厂生产宝马牌子的车,奔驰工厂生产奔驰牌子的车。这就是抽象工厂设计模式;

而建造者模式,在于如何组装车辆,可能发动机用宝马的,车身用奔驰的。

也可以用宝马的发动机,宝马的车身组装。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值