首先我们看下抽象工厂模式,是生成一个一个独立的对象。
而 建造者模式 其实是【把生成的几个独立的对象组成一个整体。】
- 下面我们看下类图:
- 我们看到类图中的部分:
- 1、Director 指导者:其实就是在生成一个整体的时候 要调用的对象,他来指导 Builder 类 实现配件的生成和组装;
- 2、Builder:一般是接口(抽象类影响 具体实现类的 继承关系),是定义的具体实现类 的一个上层抽象,里面定义的是实现的具体生成,组装的方法;
- 3、ConcreteBuilder:具体实现类,实现组装和生成。
- 4、Product:生成的一个整体。
如果不考虑扩展性的话,其实可以只看ContreteBuilder类 和 Product类。像数学中的加法,Part1 + Part2 = Product,实现加法的操作是ContreteBuilder类。
来个事例:
class Director {
public void produce(IBuilder Builder){
Builder.buildPart1("part1");
Builder.buildPart2("part2");
}
}
interface IBuilder {
public void buildPart1(String name1);
public void buildPart2(String name2);
public Product getProduct ();
}
class Builder implements IBuilder {
Product product;
public Builder(){
product = new Product();
}
@Override
public void buildPart1(String name1) {
product.part1Name = name1;
}
@Override
public void buildPart2(String name2) {
product.part2Name = name2;
}
@Override
public Product getProduct() {
return product;
}
}
class Product {
String part1Name;
String part2Name;
public Product (){}
public Product(String part1Name, String part2Name) {
this.part1Name = part1Name;
this.part2Name = part2Name;
}
public String getPart1Name() {
return part1Name;
}
public void setPart1Name(String part1Name) {
this.part1Name = part1Name;
}
public String getPart2Name() {
return part2Name;
}
public void setPart2Name(String part2Name) {
this.part2Name = part2Name;
}
@Override
public String toString() {
return "Product : part1Name= " + part1Name +" , part2Name= " + part2Name;
}
}
public class BuilderTest {
public static void main(String[] args) {
Product product = new Product();
IBuilder builder = new Builder();
Director director = new Director();
director.produce(builder);
product = builder.getProduct();
System.out.println(product.toString());
}
}
由指导者 Director 把name 传进去就实现了组装。
这样就实现了建造者模式。
尝试一下吧。
时间: 2024-11-25 12:52:31