千家信息网

Java设计模式的建造者模式是什么

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了Java设计模式的建造者模式是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java设计模式的建造者模式是什么文章都会有所收获,下面我们一起来看看吧
千家信息网最后更新 2026年11月03日Java设计模式的建造者模式是什么

这篇文章主要介绍了Java设计模式的建造者模式是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java设计模式的建造者模式是什么文章都会有所收获,下面我们一起来看看吧。

1、什么是建造者模式?

我们知道在软件开发过程中有时需要创建一个很复杂的对象,通常由多个子部件按一定的步骤组合而成。

例如,比如我们在自己在组装一台计算机的时候,需要有 CPU、主板、内存、硬盘、显卡、机箱、显示器、键盘、鼠标等部件组装而成的。比如学校需要采购100台计算机,学校不可能自己把零件买过来自己组装,肯定是告诉采购员需要怎么样的配置,然后由采购员去电脑公司购买,公司帮你组装好后再交给采购员,最后交给学校。

上面这个举例可以看出各个部件可以灵活选择(包括电脑各个配置的档次),但其创建步骤都大同小异。但是这类产品的创建无法用前面介绍的工厂模式描述,只有建造者模式可以很好地描述该类产品的创建。

2、建造者模式的定义

建造者模式的定义:

将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。

一句话概括: 将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

类型: 创建类模式

3、建造者模式的优缺点

优点:

  • 封装性良好,构建和表示分离

  • 扩展性比较好,各个具体的建造者相互独立,有利于系统的解耦

  • 客户端没必要知道产品内部组成的细节,建造者可以对创建过程逐步细化,而不对其它模块产生任何影响,便于控制细节风险

缺点:

  • 产品的组成部分必须相同,这限制了其使用范围

  • 如果产品的内部变化复杂,如果产品内部发生变化,则建造者也要同步修改,后期维护成本较大

注意:

建造者模式和工厂模式的关注点不同: 建造者模式注重零部件的组装过程,而工厂方法模式更注重零部件的创建过程,但两者可以结合使用。

4、建造者模式的结构

建造者模式的主要角色如下:

  • 产品角色(Product): 它是包含多个组成部件的复杂对象,由具体建造者来创建其各个零部件

  • 抽象建造者(Builder): 实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并提供一个检索产品的接口

  • 具体建造者(Concrete Builder): 构造一个使用Builder接口的对象,指导构建过程

  • 指挥者(Director): 它调用建造者对象中的部件构造与装配方法完成复杂对象的创建,在指挥者中不涉及具体产品的信息

结构图(参考自互联网):

5、建造者模式代码演示

比如现在需要建造一辆汽车:

产品类:

/** * 产品类 */public class Car {    //车的建造过程    private String wheel;  //车轮    private String skeleton;  //车架    private String engine;   //发动机    public String getWheel() {        return wheel;    }    public void setWheel(String wheel) {        this.wheel = wheel;    }    public String getSkeleton() {        return skeleton;    }    public void setSkeleton(String skeleton) {        this.skeleton = skeleton;    }    public String getEngine() {        return engine;    }    public void setEngine(String engine) {        this.engine = engine;    }}

指导者类:

/** * 指导者 *///汽车总监public class CarDirector {    public Car constructCar(ICarBuilder builder){        builder.buildwheel();        builder.buildSkeleton();        builder.buildEngine();        return builder.buildCar();    }}

具体建造者:

/** * 具体建造者:生产具体的东西 */public class ConcreteBuilder implements ICarBuilder{    Car car;    public ConcreteBuilder(){        car = new Car();    }    @Override    public void buildwheel() {        car.setWheel("轮子");    }    @Override    public void buildSkeleton() {        car.setSkeleton("车身结构");    }    @Override    public void buildEngine() {        car.setEngine("发动机");    }    @Override    public Car buildCar() {        return this.car;    }}

抽象建造者(接口):

/** * 抽象建造者 */public interface ICarBuilder {    public void buildwheel();   //构建车轮    public void buildSkeleton();   //构建骨架    public void buildEngine(); //构建发动机    Car buildCar();}

测试类:

public class Test {    public static void main(String[] args){        //新建一个总监(替你去买汽车)        CarDirector director = new CarDirector();        Car car = director.constructCar(new ConcreteBuilder());        System.out.println(car.getWheel());        System.out.println(car.getEngine());        System.out.println(car.getSkeleton());    }}

看完代码演示后再结合文章的第一部分,就可以看懂啦!!

6、建造者模式的应用场景

建造者模式唯一区别于工厂模式的是针对复杂对象的创建。也就是说,如果创建简单对象,通常都是使用工厂模式进行创建,而如果创建复杂对象,就可以考虑使用建造者模式

主要应用场景:

  • 相同的方法,不同的执行顺序,产生不同的结果

  • 多个部件或零件,都可以装配到一个对象中,但是产生的结果又不相同

  • 产品类非常复杂,或者产品类中不同的调用顺序产生不同的作用

  • 初始化一个对象特别复杂,参数多,而且很多参数都具有默认值

7、建造者模式和工厂模式的区别

  • 建造者模式更加注重方法的调用顺序,工厂模式注重创建对象

  • 创建对象的力度不同,建造者模式创建复杂的对象,由各种复杂的部件组成,工厂模式创建出来的对象都一样

  • 关注重点不一样,工厂模式只需要把对象创建出来就可以了,而建造者模式不仅要创建出对象,还要知道对象由哪些部件组成

  • 建造者模式根据建造过程中的顺序不一样,最终对象部件组成也不一样

关于"Java设计模式的建造者模式是什么"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"Java设计模式的建造者模式是什么"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

模式 对象 复杂 产品 部件 工厂 过程 不同 设计模式 设计 品类 多个 接口 方法 顺序 采购 相同 发动机 学校 汽车 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 花魁咖啡 西安纸贵互联网科技有限公司 中关村互联网 科技集团 厦门中拓互联网络科技有限公司 朗新科技与工业互联网 美国互联网科技 国外互联网科技网站 新华互联网科技校企合作 成都玖崟互联网科技有限公司乐商圈怎么样 深圳前海聚择互联网科技有限公司 岳阳华臻互联网科技有限公司 苏州五指互联网络科技有限 互联网科技革命什么开始 晓花互联网科技有限公司网址 用友工业互联网科技发展 互联网科技公司营业执照怎么办理 工业互联网山东科技大学 互联网科技包装股 杭州融税互联网科技有限公司 互联网企业和网络科技有限公司 互联网科技公司起名 金融科技还是互联网 互联网巨头反垄断金融科技 中国的互联网科技企业的崛起 来此购互联网科技有限公司 互联网对科技的发展 畅思互联网科技 广州梦谷互联网科技有限公司领导 瑞安市蟠桃会互联网科技有限公司 高科技和互联网的现代国家
0