【Java】设计模式三:建造者模式

设计模式三:建造者模式

程序开发与运维发布于 今天 02:11

什么是建造者模式

官方的定义: 将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示 。在实际工作中,用得较多的情况是初始化一个有很多属性的对象,而这些属性有的是必须的,有的是可选的。如果不使用建造者模式,要么需要创建较多的构造方法,要么调用多个setter方法。

实现方式

  • Product:具体的产品对象。
  • Builder: 建造者的抽象基类(有时会使用接口代替)。其定义了构建Product的抽象步骤,其实体类需要实现这些步骤。其会包含一个用来返回最终产品的方法Product getProduct()
  • ConcreteBuilder:Builder的实现类。
  • Director:构建一个使用Builder接口的对象。它主要是用于创建一个复杂的对象。在比较简单的情况下,直接在客户端调用Builder对象即可。

这里使用建造者模式来构建一个属性较多的对象,代码如下:

// 具体产品

public class Product {

private String attr1;

private String attr2;

private String attr3;

private String attr4;

public Product() {

}

public Product(String attr1, String attr2) {

this.attr1 = attr1;

this.attr2 = attr2;

}

public String getAttr1() {

return attr1;

}

public void setAttr1(String attr1) {

this.attr1 = attr1;

}

public String getAttr2() {

return attr2;

}

public void setAttr2(String attr2) {

this.attr2 = attr2;

}

public String getAttr3() {

return attr3;

}

public void setAttr3(String attr3) {

this.attr3 = attr3;

}

public String getAttr4() {

return attr4;

}

public void setAttr4(String attr4) {

this.attr4 = attr4;

}

@Override

public String toString() {

return "Product{" +

"attr1='" + attr1 + '\'' +

", attr2='" + attr2 + '\'' +

", attr3='" + attr3 + '\'' +

", attr4='" + attr4 + '\'' +

'}';

}

}

// 抽象建造者

public abstract class Builder {

public abstract Builder buildAttr3();

public abstract Builder buildAttr4();

public abstract Product getProduct();

}

// 具体建造者

public class ProductBuilder extends Builder {

private Product product;

public ProductBuilder(String attr1, String attr2) {

product = new Product(attr1,attr2);

}

@Override

public Builder buildAttr3() {

product.setAttr3("Product attr3");

return this;

}

@Override

public Builder buildAttr4() {

product.setAttr4("Product attr4");

return this;

}

@Override

public Product getProduct() {

return product;

}

}

// 调用者

public class TestBuilder {

public static void main(String[] args) {

Product product = new ProductBuilder("product attr1", "product attr2")

.buildAttr3()

.buildAttr4()

.getProduct();

System.out.println(product);

}

}

类图如下:

【Java】设计模式三:建造者模式

欢迎关注我的公众号,一起学习技术。

【Java】设计模式三:建造者模式

java

阅读 40发布于 今天 02:11

本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议

avatar

程序开发与运维

1 声望

0 粉丝

0 条评论

得票时间

avatar

程序开发与运维

1 声望

0 粉丝

宣传栏

什么是建造者模式

官方的定义: 将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示 。在实际工作中,用得较多的情况是初始化一个有很多属性的对象,而这些属性有的是必须的,有的是可选的。如果不使用建造者模式,要么需要创建较多的构造方法,要么调用多个setter方法。

实现方式

  • Product:具体的产品对象。
  • Builder: 建造者的抽象基类(有时会使用接口代替)。其定义了构建Product的抽象步骤,其实体类需要实现这些步骤。其会包含一个用来返回最终产品的方法Product getProduct()
  • ConcreteBuilder:Builder的实现类。
  • Director:构建一个使用Builder接口的对象。它主要是用于创建一个复杂的对象。在比较简单的情况下,直接在客户端调用Builder对象即可。

这里使用建造者模式来构建一个属性较多的对象,代码如下:

// 具体产品

public class Product {

private String attr1;

private String attr2;

private String attr3;

private String attr4;

public Product() {

}

public Product(String attr1, String attr2) {

this.attr1 = attr1;

this.attr2 = attr2;

}

public String getAttr1() {

return attr1;

}

public void setAttr1(String attr1) {

this.attr1 = attr1;

}

public String getAttr2() {

return attr2;

}

public void setAttr2(String attr2) {

this.attr2 = attr2;

}

public String getAttr3() {

return attr3;

}

public void setAttr3(String attr3) {

this.attr3 = attr3;

}

public String getAttr4() {

return attr4;

}

public void setAttr4(String attr4) {

this.attr4 = attr4;

}

@Override

public String toString() {

return "Product{" +

"attr1='" + attr1 + '\'' +

", attr2='" + attr2 + '\'' +

", attr3='" + attr3 + '\'' +

", attr4='" + attr4 + '\'' +

'}';

}

}

// 抽象建造者

public abstract class Builder {

public abstract Builder buildAttr3();

public abstract Builder buildAttr4();

public abstract Product getProduct();

}

// 具体建造者

public class ProductBuilder extends Builder {

private Product product;

public ProductBuilder(String attr1, String attr2) {

product = new Product(attr1,attr2);

}

@Override

public Builder buildAttr3() {

product.setAttr3("Product attr3");

return this;

}

@Override

public Builder buildAttr4() {

product.setAttr4("Product attr4");

return this;

}

@Override

public Product getProduct() {

return product;

}

}

// 调用者

public class TestBuilder {

public static void main(String[] args) {

Product product = new ProductBuilder("product attr1", "product attr2")

.buildAttr3()

.buildAttr4()

.getProduct();

System.out.println(product);

}

}

类图如下:

【Java】设计模式三:建造者模式

欢迎关注我的公众号,一起学习技术。

【Java】设计模式三:建造者模式

以上是 【Java】设计模式三:建造者模式 的全部内容, 来源链接: utcz.com/a/108228.html

回到顶部