软件设计模式(实验四)—— 建造者模式的应用(Java)

实验四 建造者模式的应用(Java实现)

一、实验目的

(1)掌握建造者模式(Builder)的特点
(2)分析具体问题,使用建造者模式进行设计。

二、实验内容和要求

建造者模式是一种创建型模式,它主要是应对项目中一些复杂对象的创建工作。所谓“复杂对象”,是指此对象中还含有其它的子对象。我们现在定义一个场景:汽车生产必须包含车轮(Wheel)、油箱(OilBox)和车身(Body),应用建造者模式,用C#或Java、C++控制台应用程序实现该设计,构建BMW品牌和BenZ品牌汽车生产。绘制该模式的UML图。

三、源代码

1.Car 类

public class Car {
    private String wheels;
    private String oilbox;
    private String body;
    public String getWheels() {
        return wheels;
    }
    public void setWheels(String wheels) {
        this.wheels = wheels;
    }
    public String getOilbox() {
        return oilbox;
    }
    public void setOilbox(String oilbox) {
        this.oilbox = oilbox;
    }
    public String getBody() {
        return body;
    }
    public void setBody(String body) {
        this.body = body;
    }

    public void print(){
        System.out.println(wheels);
        System.out.println(oilbox);
        System.out.println(body);
    }
}

2.Builder 类

public abstract class Builder {
    Car create=new Car();
    public abstract void BuildWheels();
    public abstract void BuildOilBox();
    public abstract void BuildBody();

    public Car result(){
        return create;
    }
}

3.BenzBuilder 类

public class BenzBuilder extends Builder {
    @Override
    public void BuildWheels() {
// TODO Auto-generated method stub
        create.setBody("body of benz");
    }
    @Override
    public void BuildOilBox() {
// TODO Auto-generated method stub
        create.setOilbox("oilbox of benz");
    }
    @Override
    public void BuildBody() {
// TODO Auto-generated method stub
        create.setWheels("wheels of benz");
    }
}

4.BMWBuilder 类

public class BMWBuilder extends Builder {
    @Override
    public void BuildWheels() {
// TODO Auto-generated method stub
        create.setWheels("Wheels of bmw");
    }
    @Override
    public void BuildOilBox() {
// TODO Auto-generated method stub
        create.setOilbox("oilbox od bmw");
    }
    @Override
    public void BuildBody() {
// TODO Auto-generated method stub
        create.setBody("body of bmw");
    }
}

5.Director 类

public class Director {
    private Builder builder;
    public Director(Builder builder){
        this.builder=builder;
    }
    public void setBuilder(Builder builder)
    {
        this.builder=builder;
    }

    public void CreateCar(){
        builder.BuildBody();
        builder.BuildOilBox();
        builder.BuildWheels();
    }
}

6.Test 类

public class Test {
    public static void main(String[] args) {
// TODO Auto-generated method stub
        Car car;
        Builder builder=new BenzBuilder();
        Director dir=new Director(builder);
        dir.CreateCar();
        car=builder.result();
        car.print();
    }
}

四、UML图

在这里插入图片描述

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值