Java Builder Pattern建造者模式详解及实例

发布时间 - 2026-01-10 22:27:20    点击率:

Java Builder Pattern

1.概念

    将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 [构建与表示分离,同构建不同表示]

    与抽象工厂的区别:在建造者模式里,有个指导者,由指导者来管理建造者,用户是与指导者联系的,指导者联系建造者最后得到产品。即建造模式可以强制实行一种分步骤进行的建造过程。

  建造模式是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调用者无需关心。

  举个简单的例子,如汽车,有很多部件,车轮,方向盘,发动机还有各种小零件等等,部件很多,但远不止这些,如何将这些部件装配成一部汽车,这个装配过程也很复杂(需要很好的组装技术), builder模式就是为了将部件和组装分开。

2.UML图

3.代码

 public interface Builder { 
    void buildPartA(); 
    void buildPartB(); 
    void buildPartC(); 
  
    Product getResult(); 
  } 

  //具体建造工具
  public class ConcreteBuilder implements Builder { 
    Part partA, partB, partC; 

    public void buildPartA() {
      //这里是具体如何构建partA的代码
    }; 
    public void buildPartB() { 
      //这里是具体如何构建partB的代码
    }; 
     public void buildPartC() { 
      //这里是具体如何构建partB的代码
    }; 
     public Product getResult() { 
      //返回最后组装成品结果
    }; 
  }

  //建造者
  public class Director {
    private Builder builder; 
  
    public Director( Builder builder ) { 
      this.builder = builder; 
    } 
    public void construct() { 
      builder.buildPartA();
      builder.buildPartB();
      builder.buildPartC(); 
    } 
  } 


  public interface Product { }
  public interface Part { }

    下面是调用builder的方法:

  ConcreteBuilder builder = new ConcreteBuilder();
  Director director = new Director( builder ); 
  
  director.construct(); 
  Product product = builder.getResult();

4.应用场景

在Java的应用中JavaMail使用到了该模式。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Java  # Builder  # Pattern建造者模式  # Pattern详解  # 建造者模式  # java设计模式--建造者模式详解  # java实现建造者模式(Builder Pattern)  # Java运用设计模式中的建造者模式构建项目的实例解析  # Java设计模式之建造者模式实例详解  # java开发建造者模式验证实例详解  # 的人  # 很好  # 有个  # 有很多  # 也很  # 希望能  # 只需要  # 谢谢大家  # 如何将  # 举个  # 在内部  # 远不止  # 调用者  # UML 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何用搬瓦工VPS快速搭建个人网站?  如何快速辨别茅台真假?关键步骤解析  Laravel如何处理CORS跨域请求?(配置示例)  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  Python进程池调度策略_任务分发说明【指导】  如何在新浪SAE免费搭建个人博客?  Android 常见的图片加载框架详细介绍  图册素材网站设计制作软件,图册的导出方式有几种?  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  IOS倒计时设置UIButton标题title的抖动问题  js实现点击每个li节点,都弹出其文本值及修改  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  JS碰撞运动实现方法详解  php json中文编码为null的解决办法  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  教学论文网站制作软件有哪些,写论文用什么软件 ?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  C++时间戳转换成日期时间的步骤和示例代码  青岛网站建设如何选择本地服务器?  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  微信小程序 wx.uploadFile无法上传解决办法  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  新三国志曹操传主线渭水交兵攻略  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  JavaScript中的标签模板是什么_它如何扩展字符串功能  深入理解Android中的xmlns:tools属性  如何在万网自助建站中设置域名及备案?  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  如何在阿里云ECS服务器部署织梦CMS网站?  JavaScript如何实现继承_有哪些常用方法  javascript读取文本节点方法小结  如何快速打造个性化非模板自助建站?  如何在阿里云购买域名并搭建网站?  利用python获取某年中每个月的第一天和最后一天  香港服务器网站推广:SEO优化与外贸独立站搭建策略  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  Laravel如何使用Gate和Policy进行授权?(权限控制)  网站制作壁纸教程视频,电脑壁纸网站?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  Laravel如何发送系统通知?(Notification渠道示例)  WordPress 子目录安装中正确处理脚本路径的完整指南  如何在云主机上快速搭建网站?  如何注册花生壳免费域名并搭建个人网站?  Laravel如何配置任务调度?(Cron Job示例)  敲碗10年!Mac系列传将迎来「触控与联网」双革新