美文网首页
建造者模式

建造者模式

作者: 南小夕 | 来源:发表于2019-04-25 17:11 被阅读0次

一、前言

建造者模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程。该模式是为了将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离开来。

二、定义

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,用户只需指定需要建造的类型就可以得到它们,建造过程及细节不需要知道。

三、使用场景

如果一个对象有非常复杂的内部结构(很多属性),想把复杂对象的创建和使用分离。

四、与工厂模式的区别

建造者和工厂很相似,它们之间的区别:
1、建造者更注重方法的调用顺序,工厂更注重产品
2、创建产品的力度不同,建造者可以创建一些复杂的产品,由各种复杂的部件组成,而工厂创建出来的都一个样子。
3、另外一个关注点,工厂模式只要把这个对象创建出来就可以了,而建造者不仅要把产品创建出来,还要知道这个产品都是由哪些部件组成的,建造者在某些场景下,可能因为方法调用顺序不一样,而创建出来的对象不一样。
4、当创建一个对象需要很多步骤的时候适合用建造者模式,而当需要一个简单的方法可以简单的创建整个对象时适合用工厂模式。

五、代码实战

现在我们要建造一个视频课程。首先创建一个课程类,有课程的名字、课程所需要的PPT、课程需要的Video、课程的手记还有课程的QA。 屏幕快照 2019-04-25 下午3.15.22.png 接下来创建一个抽象类,课程建造者, 屏幕快照 2019-04-25 下午3.16.04.png 再接下来,要创建一个课程的真正builder, 屏幕快照 2019-04-25 下午3.16.12.png 这个时候引入一个负责跟制作视频课程对接的人,在这称为课程教练, 屏幕快照 2019-04-25 下午3.22.42.png 测试 屏幕快照 2019-04-25 下午3.26.53.png
UML类图 屏幕快照 2019-04-25 下午2.47.23.png 这个应用层Test和抽象的builder、具体的课程都没有关系,但是他和这个课程教练有关系,他来创建这个指挥官,这个指挥官通过组合的方式使用CourseBuilder这个抽象类,而且应用层Test又创建具体的Builder,也就是Test可以创建不同的具体Builder传给课程教练Coach,然后交给课程教练Coach来创建这个课程。
再看一下链式调用,直接创建课程类Course,在这里要使用静态内部类,他就是建造者, 屏幕快照 2019-04-25 下午3.46.58.png 屏幕快照 2019-04-25 下午3.47.19.png 测试 屏幕快照 2019-04-25 下午3.50.45.png UML类图 屏幕快照 2019-04-25 下午3.06.56.png

这个类图相对于上面那个类图就简单很多,这个CourseBuilder作为具体课程的建造者,而应用层只需要负责和具体建造者交互,然后设置具体的属性,最后调用build方法返回具体的实体类。

六、总结

1、优点

(1)封装性好,创建和使用分离;
(2)扩展性好、建造类之间独立、一定程度上解耦。

2、缺点

(1)产生多余的Builder对象;
(2)产品内部发生变化,建造者都要修改,成本较大。

相关文章

  • Builder Pattern in Java

    建造者模式:建造者模式定义建造者模式应用场景实现案例Jdk中的建造者模式建造者模式的优点建造者模式的缺点 建造者模...

  • 设计模式(4) 建造者模式

    什么是建造者模式 经典建造者模式的优缺点 对建造者模式的扩展 什么是建造者模式 建造者模式将一个复杂的对象的构建与...

  • 建造者模式(部件构造)

    目录 建造者模式的理念 从 POJO 到建造者模式的思考 怎么来实现建造者模式 建造者模式在Android源码中的...

  • 【设计模式】之建造者Builder模式

    建造者模式 什么是建造者模式? 建造者模式属于创建型模式的一员,可以控制对象的实例化过程。建造者模式简化了复杂对象...

  • 建造者模式

    一、建造者模式介绍 二、建造者模式代码实例

  • 建造者模式

    建造者模式 首先,建造者模式的封装性很好。使用建造者模式可以有效的封装变化,在使用建造者模式的场景中,一般产品类和...

  • 建造者模式:深入理解建造者模式 ——组装复杂的实例

    目录: 一 建造者模式介绍 1.1 定义 1.2 为什么要用建造者模式(优点)? 1.3 哪些情况不要用建造者模式...

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • 一、设计模式(构建模式)——03建造模式与原型模式

    建造者模式 建造型模式用于创建过程稳定,但配置多变的对象。 建造模式的实现要点: 在建造者模式中,指挥者是直接与客...

  • 创建型模式:建造者模式

    个人公众号原文:创建型模式:建造者模式 五大创建型模式之四:建造者模式。 简介 姓名 :建造者模式 英文名 :Bu...

网友评论

      本文标题:建造者模式

      本文链接:https://www.haomeiwen.com/subject/cjuzgqtx.html