【JAVA设计模式】- 建造者模式
程序员文章站
2023-12-23 22:54:40
建造者模式也属于创建型模式,它提供了一种创建对象的最佳模式用户只需要给定复杂对象的类型和内容,建造者模式负责按顺序创建复杂对象应用场景需要生成的产品对象有复杂的内部结构,这些产品对象具备共性隔离复杂对象的创建和使用,并获得相同的创建过程可以创建不同的产品适合于一个具有较多的零件(属性)的产品的创建过程实现:盖房子之地基、钢筋工程、铺电线和粉刷package com.li.builder.demo;//抽象的建造者:方法public abstract class Builder...
建造者模式也属于创建型模式,它提供了一种创建对象的最佳模式
用户只需要给定复杂对象的类型和内容,建造者模式负责按顺序创建复杂对象
应用场景
- 需要生成的产品对象有复杂的内部结构,这些产品对象具备共性
- 隔离复杂对象的创建和使用,并获得相同的创建过程可以创建不同的产品
- 适合于一个具有较多的零件(属性)的产品的创建过程
实现:盖房子之地基、钢筋工程、铺电线和粉刷
Builder.java
package com.li.builder.demo;
//抽象的建造者:方法
public abstract class Builder {
public abstract void buildA(); //地基
abstract void buildB(); //钢筋工程
abstract void buildC(); //铺电线
abstract void buildD(); //粉刷
//完工:得到产品
abstract Product getproduct();
}
Director.java
package com.li.builder.demo;
//指挥:核心。负责指挥构建一个工程。工程创建由它决定
public class Director {
//指挥工人按照顺序建房子
public Product build(Builder builder){
builder.buildA();
builder.buildB();
builder.buildC();
builder.buildD();
return builder.getproduct();
}
}
Product.java
package com.li.builder.demo;
//产品:房子
public class Product {
private String buildA;
private String buildB;
private String buildC;
private String buildD;
public String getBuildA() {
return buildA;
}
public void setBuildA(String buildA) {
this.buildA = buildA;
}
public String getBuildB() {
return buildB;
}
public void setBuildB(String buildB) {
this.buildB = buildB;
}
public String getBuildC() {
return buildC;
}
public void setBuildC(String buildC) {
this.buildC = buildC;
}
public String getBuildD() {
return buildD;
}
public void setBuildD(String buildD) {
this.buildD = buildD;
}
//方便测试输出
@Override
public String toString() {
return "Product{" +
"buildA='" + buildA + '\'' +
", buildB='" + buildB + '\'' +
", buildC='" + buildC + '\'' +
", buildD='" + buildD + '\'' +
'}';
}
}
Worker.java
package com.li.builder.demo;
//具体的建造者:工人
public class Worker extends Builder {
private Product product;
public Worker() {
product = new Product();
}
@Override
public void buildA() {
product.setBuildA("地基");
System.out.println("地基");
}
@Override
void buildB() {
product.setBuildB("钢筋工程");
System.out.println("钢筋工程");
}
@Override
void buildC() {
product.setBuildC("铺电线");
System.out.println("铺电线");
}
@Override
void buildD() {
product.setBuildD("粉刷");
System.out.println("粉刷");
}
@Override
Product getproduct() {
return product;
}
}
测试
package com.li.builder.demo;
public class Test {
public static void main(String[] args) {
//指挥
Director director = new Director();
//指挥 具体的工人完成 产品
Product build = director.build(new Worker());
System.out.println(build.toString());
}
}
本文地址:https://blog.csdn.net/ijwwio/article/details/107139067