linkin大话设计模式--建造模式

时间:2022-06-05 09:55:15

linkin大话设计模式--建造模式



建造模式是对象的创建模式,可以讲一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。



建造模式的结构:

抽象建造者角色(Builder):给出一个抽象的接口,用来规范产品对象的各个组成成分的建造。

具体建造者角色(ConcreteBuilder):

1.实现抽象建造者所申明的接口,给出一步一步地完成创建产品实例的操作。

2.在建造过程完成后,提*品的实例。

导演者角色(Director):用来调用具体建造者以创建产品对象。

产品角色(Product):要建造的对象。



在什么情况下使用建造模式?个人觉得有点绕,没有多少体会。。。
1.需要生成的产品对象有复杂的内部结构。每一个内部成分本身可以是对象,也可以仅仅是一个对象的一个组成成分。
2.需要生成的产品对象的属性互相依赖。
3.在对象创建过程中会使用到系统中的其他一些对象,这些对象在产品的创建过程中不易得到。


代码如下:
public class MyCarTest {
public static void main(String[] args) {
//建造模式 指定一个导演 然后创建出不同的产品
Director d=new Director();
Car car=d.buildCar();
System.out.println(car);
Train train=d.buildTrain();
System.out.println(train);
} } //导演者角色 直接暴露给客户端创建自己的产品
class Director {
private BuildeCar bc=new BuilderCar();
private BuildeTrain bt=new BuilderTrain();
//命令造汽车
public Car buildCar(){
bc.carPart1();
bc.carPart2();
bc.carPart3();
Car car=bc.carOver();
return car;
} //命令造火车
public Train buildTrain(){
bt.trainPart();
bt.loco();
Train train=bt.trainOver();
return train;
} } //对火车来说 抽象建造者角色接口
interface BuildeTrain{ public void trainPart();
public void loco();
public Train trainOver();
} //对汽车来说 抽象建造者角色接口
interface BuildeCar{ public abstract void carPart1();
public abstract void carPart2();
public abstract void carPart3();
public abstract Car carOver();
} class BuilderTrain implements BuildeTrain{
private Train train=new Train();
public void trainPart(){
System.out.println("火车的车厢造好了...");
}
public void loco(){
System.out.println("火车头造好了...");
}
public Train trainOver(){
return train;
}
} class BuilderCar implements BuildeCar{
private Car car=new Car();
public void carPart1(){
System.out.println("汽车的框架完成了...");
}
public void carPart2(){
System.out.println("汽车的底盘完成了...");
}
public void carPart3(){
System.out.println("汽车的轮胎完成了...");
}
public Car carOver(){
return car;
}
} class Car {
public String toString (){
return "汽车产品...";
}
} class Train {
public String toString(){
return"火车产品...";
}
}

linkin大话设计模式--建造模式