一. 实验目的
- 了解建造模式创建复杂对象的基本思路和方法,熟悉该模式中各个对象角色的基本功能。
- 理解建造模式在进行复杂对象创建中,是如何实现复杂对象的构建过程与表示分离的。
- 熟悉建造模式的类图结构,并能利用该模式实现较为复杂对象的创建。
二. 实验内容
通过如下对组装电脑的装配与获取过程描述,设计一个建造模式应用的场景。
- 销售人员来询问所装机器的配置
- 确定配置清单
- 准备装机配件
- 技术人员按组装流程装配相应电脑
- 整机交给客户
在上述场景中确定模式应用的各个角色,并以配置的电脑主机作为所需的产品对象,进行产品创建。在该场景中,对于电脑主机的装配简化为如下5个标准步骤,作为创建该产品的基本过程。
- 将主板固定在机箱中(SetupMainBoard)
- 将CPU安装到主板上(SetupMainCPU)
- 将内存安装到主板上(SetupMemory)
- 将硬盘连接到主板上(SetupHardDisk)
- 将显卡安装到主板上(SetupVioeoCard)
并设置两种主机产品的表现形式,即办公主机(OfficeComputer)与游戏主机(GameComputer)。
三. 实验过程
应用场景:
实现计算机的组装:用户去购买计算机时,销售人员会来询问所装机器的配置,可以根据自己的需要选购计算机的CPU、内存条、显卡、主板、硬盘等各个配件,在确定配置清单后,商家开始准备装机的配件,准备完成后,技术人员按组装流程装配相应电脑,最后会把装好的整机交给客户,用建造者模式解决这个问题。
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
类图
结构与实现
建造者(Builder)模式由产品、抽象建造者、具体建造者、指挥者等 4 个要素构成,现在我们来分析其基本结构和实现方法。
- 产品角色(Product):
1.表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。
2.包含定义组成部件的类,包括将这些部件配成最终产品的接口。 - 抽象建造者(Builder):为创建一个Product对象的各个部件指定抽象接口。
- 具体建造者(ConcreteBuilder):
1.实现Builder的接口以构造和装配该产品的各个部件。
2.定义并跟踪它所创建的表示。
3.提供一个检索产品的接口(例如,GetACIIText和GetTextWidget)。 - 指挥者(Director):构造一个被使用Builder接口的对象。
抽象建造者(Builder)
使用抽象类定义对应用场景电脑的重要部件的定义:
public abstract class Builder {
protected String name;
protected Computer computer;
public String getname(){
return name;
}
public void setname(String str){
name=str;
}
public Computer getcomputer(){
return computer;
}
public void setcomputer(Computer com){
computer=com;
}
public Builder(){
computer=new Computer();
}
public abstract void setupMainBoard();
public abstract void setupCPU();
public abstract void setupHardDisk();