博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java之建造者模式(Builder Pattern)(转)
阅读量:6967 次
发布时间:2019-06-27

本文共 1422 字,大约阅读时间需要 4 分钟。

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使用到了该模式。

 

转载于:https://www.cnblogs.com/bingosblog/p/4184545.html

你可能感兴趣的文章
linux netstat命令
查看>>
淘宝卖家遭恶退诈骗 阿里一年来协助警方抓获103人
查看>>
拥2180亿美元收入,苹果成全球最大IT企业
查看>>
数据库连接池的工作原理
查看>>
网络抓包工具wireshark and tcpdump 及其实现基于的libpcap
查看>>
市值410亿美元!VR内容在5年后将成下一座金矿
查看>>
easyui的combobox根据后台数据实现自动输入提示功能
查看>>
ASP.NET MVC WEB API必知必会知识点总结
查看>>
Test2 unit6
查看>>
sql注入<二>
查看>>
26、OSPF配置实验之不规则区域虚链路
查看>>
[C++再学习系列] 引用和指针
查看>>
未能加载文件或程序集“********”或它的某一个依赖项。试图加载格式不正确的程序。...
查看>>
bootstrap4-图像
查看>>
Centos7 MariaDB10.1.22编译安装
查看>>
路由器配置基础(中)
查看>>
/etc/sudoers的配置
查看>>
菜鸟学Linux 第075篇笔记 mysql事务,视图
查看>>
Mysql + PHP
查看>>
jetty9请求form表单太小限制
查看>>