步步为营之——建造者模式(Builder)

本文详细介绍了Builder模式的概念及其应用场景,通过构建汽车的例子展示了如何利用Builder模式来处理复杂对象的构建过程,同时对比了Builder模式与Abstract Factory模式的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Builder模式的定义是:将一个复杂对象构建与其表示相分离,使得同样的构建过程可以创建不同的表示 

首先它意图是要构建一个复杂的对像,而这个复杂的对像往往需要由好几个子对像或分步聚来完成最终的这个对象的构建,而这个复杂对象的子对像经常需要不断的变化,但它的构建过程是相对是稳定的。

比如:一部汽车:它由发动机,轮胎、底盘,车身组成。而此时无论我最终构建的汽车是大众牌的汽车还是奥迪汽车,它的构建过程是不会变的,都是由发动机,轮胎、底盘,车身组成。至于大众牌的汽车还是奥迪汽车它们各自采用的是什么样的发动机,轮胎、地盘这些肯定是不一样的,也就是经常变化的。

通过对上面的分析,我们能够得出其下代码:

 1 public abstract class BuilderCar
 2     {
 3         public abstract void Engine();//发动机
 4         public abstract void Chassis();//底盘
 5         public abstract void Carbody();//车身
 6         public abstract void Tire();//轮胎
 7 
 8 
 9         public abstract Car GetCar();//最终构建出来的汽车
10       
11     }
12 
13     public abstract class Car {} 
 
14     

 

 接下来就是我们的逻辑代码了
  
1 public class ClentBLL 

 2     { 
 3         private BuilderCar buildercar=null;
 4         public ClentBLL(BuilderCar buildercar)
 5         {
 6             this.buildercar = buildercar;
 7         }
 8 
 9         public Car BuilderCar()
10         {
11             buildercar.Carbody();//车身
12             buildercar.Chassis();//底盘
13             buildercar.Engine();//发动机
14             buildercar.Tire();//轮胎
15 
16             return buildercar.GetCar();
17         }

 现在我们来构建一台奥迪车。

  1     //构建一台奥迪汽车

 2     public class OOOOCar:Car 
 3     { 
 4         
 5     }
 6 
 7 
 8     public class OOOOBuilderCar : BuilderCar
 9     {
10         public  void Engine(){
11             //发动机
12             //在这你随便弄什么样的发动机都可以,。
13         }
14         public  void Chassis(){}
15         public void Carbody() { }
16         public  void Tire();
17 
18 
19         public  Car GetCar() { 
20             //这块也许会用到上面这些部件方法
21                 //做一些其它的事情。
22 
23          return    new OOOOCar();//生成最终的汽车
24         
25         }

 调用代码:

  1  public class APP

2     {
3         public static void Main()
4         {
5             ClentBLL cbll = new ClentBLL(new OOOOBuilderCar());//如果想换成其它品牌的车子,只需改动这块
6         }
7     }

 其它不难发现Builder模式与Abstract Factory模式在代码上有一定的相似性,但是它们解决的问题还有一定的差别的。

  Builder模式主要解决"复杂对象各个部分"的频繁需求变动。

  Abstract Factory模式解决“系列对象”的需求变化。

它们相同的地方都是:抽象体内的对象或过程是稳定不变的,至于在项目中使用哪一个,这就要具体分析了。 

 

转载于:https://www.cnblogs.com/qgf522/archive/2012/04/12/2443404.html

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在 IT 领域,文档格式转换是常见需求,尤其在处理多种文件类型时。本文将聚焦于利用 Java 技术栈,尤其是 Apache POI 和 iTextPDF 库,实现 doc、xls(涵盖 Excel 2003 及 Excel 2007+)以及 txt、图片等格式文件向 PDF 的转换,并实现在线浏览功能。 先从 Apache POI 说起,它是一个强大的 Java 库,专注于处理 Microsoft Office 格式文件,比如 doc 和 xls。Apache POI 提供了 HSSF 和 XSSF 两个 API,其中 HSSF 用于读写老版本的 BIFF8 格式(Excel 97-2003),XSSF 则针对新的 XML 格式(Excel 2007+)。这两个 API 均具备读取和写入工作表、单元格、公式、样式等功能。读取 Excel 文件时,可通过创建 HSSFWorkbook 或 XSSFWorkbook 对象来打开相应格式的文件,进而遍历工作簿中的每个 Sheet,获取行和列数据。写入 Excel 文件时,创建新的 Workbook 对象,添加 Sheet、Row 和 Cell,即可构建新 Excel 文件。 再看 iTextPDF,它是一个用于生成和修改 PDF 文档的 Java 库,拥有丰富的 API。创建 PDF 文档时,借助 Document 对象,可定义页面尺寸、边距等属性来定制 PDF 外观。添加内容方面,可使用 Paragraph、List、Table 等元素将文本、列表和表格加入 PDF,图片可通过 Image 类加载插入。iTextPDF 支持多种字体和样式,可设置文本颜色、大小、样式等。此外,iTextPDF 的 TextRenderer 类能将 HTML、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值