实验四 建造者模式的应用(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();
}
}