设计模式:建造模式(组装电脑)

一. 实验目的

  1. 了解建造模式创建复杂对象的基本思路和方法,熟悉该模式中各个对象角色的基本功能。
  2. 理解建造模式在进行复杂对象创建中,是如何实现复杂对象的构建过程与表示分离的。
  3. 熟悉建造模式的类图结构,并能利用该模式实现较为复杂对象的创建。

二. 实验内容

        通过如下对组装电脑的装配与获取过程描述,设计一个建造模式应用的场景。

  1. 销售人员来询问所装机器的配置
  2. 确定配置清单
  3. 准备装机配件
  4. 技术人员按组装流程装配相应电脑
  5. 整机交给客户

        在上述场景中确定模式应用的各个角色,并以配置的电脑主机作为所需的产品对象,进行产品创建。在该场景中,对于电脑主机的装配简化为如下5个标准步骤,作为创建该产品的基本过程。

  1. 将主板固定在机箱中(SetupMainBoard)
  2. 将CPU安装到主板上(SetupMainCPU)
  3. 将内存安装到主板上(SetupMemory)
  4. 将硬盘连接到主板上(SetupHardDisk)
  5. 将显卡安装到主板上(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();
	
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值