建造者模式可以将复杂的构建与其表示相分离,是的相同的构建过程可以创建出不同的表示。

    建造者模式与抽象工厂的差别是:在建造者模式里,有个指导者,这个指导者来管理建造者。用户与指导者相互联系,指导者联系建造者,终于得到我们须要的产品。即建造者模式能够强制实行一种分步骤进行的建造过程。

    建造者模式是将复杂的的内部创建封装在内部。对于外部调用的人员来说,仅仅要传入指导者和建造者就能够了,详细内部如何建造成为产品,用户不用知道,不同的产品须要定义不同的建造者。
概念:
    1.抽象建造者(builder):此类一般为抽象类或者是接口。它负责描写叙述产品的建造过程(一步或者若干部)。同一时候提供返回终于产品的方法,比如这个类叫CarBuilder(void makeHead(建造车头的接口),void makeBody(建造车身的接口),void makeFoot(建造车尾的接口), Car getCar(返回一辆车)),当中三个void方法。是这辆车的组装顺序,getCar是返回终于的产品。
    2.详细建造者(ImplBuilder or extendsBuilder):此类为实现或者继承了第一步所写的接口或者抽象类,能够存在有多个,比方JeepBuilder(吉普车的建造),AodiBuilder(奥迪车的建造),实现getCar()的时候。返回产品的实例一样,实例属性不同
    3.产品实例(Car):指被构建的对象。对象内有多个属性,或者多条构建步骤
    4.指挥者(Director):指挥者又称为导演者,他负责安排对复杂对象的建造过程,指挥者与抽象建造者之间存在关联关系,指挥者中的方法(createCar())调用抽象建造者的实现类的建造步骤,完毕对复杂对象的建造功能。client一般仅仅须要实例化一个指挥者,然后实例化一个建造者(jeep车的详细建造或者aodi车的详细建造),然后通过指挥者的构造函数或者setter方法传入建造者。在指挥者的指挥类中调用建造过程。
建造模式的长处:
    1.封装性
        使用建造者模式时,能够使client不必知道产品的内部组成的细节,如上面的样例,最后都返回car对象,传入不同的建造者,就返回不        同的car对象,client不用知道内部的装配步骤
    2.建造者独立。easy扩展
        易扩展体如今不同的建造者的构建,仅仅要建造者的调用的步骤方法一样。就能够通过继承抽象类或者实现接口。来返回不同的建造者,有利于系统的扩展
    3.便于控制细节风险
        由于详细的建造者是独立的,因此能够对建造对象进行定制diy或者细化等等操作。而不用操心会对其它模块产生不论什么影响
建造者模式的使用场景:
    1.同样的方法,不同的运行顺序。产生不同的事件结果时,能够採用建造者模式
    2.多个步骤或者零件。都能够装配到一个对象中。但产生的对象内容是不一样的这时候就能够使用此模式
    3.产品类比較复杂,或者调用不同的顺序会产生不同的结构的时候。能够使用建造者模式
    4.在对象的创建过程中会用到系统中的其它对象,这些对象在产品对象的创建project中是不easy得到的,也能够使用此模式风窗该对象的创建过程。不推荐此种方法,此方法仅仅是一种补偿方法,由于一个对象不easy得到,在设计的时候已经违背了最初的设目标
建造者模式关注的零件类型和装配的顺序。这是他与工厂模式最大不同的地方。尽管同为创建类模式,可是重点确是不同的。


java设计模式之-建造者模式的更多相关文章

  1. 折腾Java设计模式之建造者模式

    博文原址:折腾Java设计模式之建造者模式 建造者模式 Separate the construction of a complex object from its representation, a ...

  2. Java 设计模式之建造者模式(四)

    原文地址:Java 设计模式之建造者模式(四) 博客地址:http://www.extlight.com 一.前言 今天继续介绍 Java 设计模式中的创建型模式--建造者模式.上篇设计模式的主题为 ...

  3. java设计模式3——建造者模式

    java设计模式3--建造者模式 1.建造者模式介绍: 建造者模式属于创建型模式,他提供了一种创建对象得最佳方式 定义: 将一个复杂对象的构建和与它的表示分离,使得同样的构建过程可以创建不同的表示 主 ...

  4. Java设计模式之建造者模式(Builder)

    前言: 最近一直在学习okHttp,也对其做了一些整理,okHttp和Retrofit结合大大加速我们的开发效率,源码里面采用了很多设计模式,今天我们来学习一下其中的设计模式之一建造者模式. 建造者模 ...

  5. Java设计模式之三 ----- 建造者模式和原型模式

    前言 在上一篇中我们学习了工厂模式,介绍了简单工厂模式.工厂方法和抽象工厂模式.本篇则介绍设计模式中属于创建型模式的建造者模式和原型模式. 建造者模式 简介 建造者模式是属于创建型模式.建造者模式使用 ...

  6. Java设计模式之三建造者模式和原型模式

    建造者模式 简介 建造者模式是属于创建型模式.建造者模式使用多个简单的对象一步一步构建成一个复杂的对象.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式.简单的来说就是将一个复杂的东西 ...

  7. java设计模式之建造者模式

    学习了设计模式,一直感觉有进步又没有进步,与同学.同事探讨了一下.变化不可能一会就可以的,需要努力坚持.不管进步大小,也不管是否进步,做到勿忘初心,做自己喜欢的事情就好.还有几个设计模式一直没有写,原 ...

  8. java设计模式之四建造者模式(Builder)

    工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到 ...

  9. java设计模式3.建造者模式、原型模式

    建造者模式 一个产品常有不同的组成部分作为产品的零件,有些情况下,一个对象会有一些重要的性质,在它们没有恰当的值之前,对象不能作为一个完整的产品使用,有些时候,一个对象的一些性质必须按照某个顺序赋值才 ...

  10. JAVA设计模式总结—建造者模式

    建造者模式 模式动机与定义 ​ 首先建造者模式的动机是为了创建复杂对象,简化传统的创建方法,提高创建的效率和可读性. ​ 像图中的这个例子,用户的需求是驾驶一辆汽车,但是对于用户来说是不需要了解汽车装 ...

随机推荐

  1. Facebook App 的头文件会有更多的收获

    最近在看一些 App 架构相关的文章,也看了 Facebook 分享的两个不同时期的架构(2013 和 2014),于是就想一窥 Facebook App 的头文件,看看会不会有更多的收获,确实有,还 ...

  2. springboot集成shiro——登陆记住我

    在shiro配置类中增加两个方法: com.resthour.config.shrio.ShiroConfiguration /** * cookie管理对象 * @return */ @Bean p ...

  3. ASP.NET配置设置-关于web.config各节点的讲解

    在msdn中搜索:“ASP.NET配置设置”,可以查看各个节点的配置. httpRuntime 元素:配置 ASP.NET HTTP 运行时设置,以确定如何处理对 ASP.NET 应用程序的请求.

  4. poj 1523 SPF 求割点以及删除该割点后联通块的数量

    SPF Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7136   Accepted: 3255 Description C ...

  5. Springmvc web项目初始化

    Web容器首先会读取项目中的web.xml配置文件中的两个节点:<context-param>与<listener> Web容器创建ServletContext对象即Servl ...

  6. php hash防止表单

    <?php /** * Created by PhpStorm. * User: brady * Desc: * Date: 2017/7/12 * Time: 15:01 */class te ...

  7. HDU2013 蟠桃记【递推】

    Problem Description 喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题!什么问题?他研究的问题是蟠桃一共有多少 ...

  8. 【Luogu】P2766最长不下降子序列问题(暴力网络流)

    题目链接 水题qwq,数据都那么水. 我要是出数据的人我就卡$n^3$建图. qwq. 然而这么水的题我!居!然!没!有!1!A!!还!提!交!了!五!遍!!! md从现在开始要锻炼1A率了 看我从今 ...

  9. BZOJ 2733 [HNOI2012]永无乡 ——线段树 并查集

    用并查集维护联通块. 用线段树的合并来合并联通块. 自己YY了一个写法. #include <map> #include <cmath> #include <queue& ...

  10. 我要好offer之 搜索算法大总结

    1. 二分搜索 详见笔者博文:二分搜索的那些事儿,非常全面 2. 矩阵二分搜索 (1) 矩阵每行递增,且下一行第一个元素大于上一个最后一个元素 (2) 矩阵每行递增,且每列也递增 3. DFS 深度优 ...