知识回顾:
之前我们讲过的设计模式在这里呦:
【面试最常见的设计模式之单例模式】
【面试最常见的设计模式之工厂模式】
【Java中23种面试常考的设计模式之备忘录模式(Memento)—行为型模式】
【Java中23种面试常考的设计模式之观察者模式(Observer)—行为型模式】
【Java中23种面试常考的设计模式之模板模式(Template)—行为型模式】
【Java中23种面试常考的设计模式之状态模式(State)—行为型模式】
【Java中23种面试常考的设计模式之策略模式(Strategy)—行为型模式】
【Java中23种面试常考的设计模式之迭代器模式(Iterator)—行为型模式】
【Java中23种面试常考的设计模式之访问者模式(Visitor)—行为型模式】
【Java中23种面试常考的设计模式之中介者模式(Mediator)—行为型模式】
【Java中23种面试常考的设计模式之解释器模式(Interpreter)—行为型模式】
【Java中23种面试常考的设计模式之命令模式(Command)—行为型模式】
【Java中23种面试常考的设计模式之责任链模式(Chain of Responsibility)—行为型模式】
【Java中23种面试常考的设计模式之适配器模式(Adapter)—结构型模式】
【Java中23种面试常考的设计模式之桥接模式(Bridge)—结构型模式】
【Java中23种面试常考的设计模式之组合模式(Composite)—结构型模式】
【Java中23种面试常考的设计模式之装饰器模式(Decorator)—结构型模式】
【Java中23种面试常考的设计模式之外观模式(Facade)—结构型模式】
【Java中23种面试常考的设计模式之享元模式(Flyweight)—结构型模式】
【Java中23种面试常考的设计模式之代理模式(Proxy)—结构型模式】
【Java中23种面试常考的设计模式之单例模式(Singleton)—创建型模式】
【Java中23种面试常考的设计模式之原型模式(prototype)—创建型模式】
接下来我们要进行学习的是:【Java中23种面试常考的设计模式之建造者模式(Builder)—创建型模式】。
指挥者Director:定义产品组装接口及组装的实现
抽象建造者Builder:定义我们的组件构造者
产品Product:最终的产品类
具体建造者ConcreteBuilder:定义我们的实现组件构造者
测试客户端类
package com.builder;
/*
* 最终的产品类
*/
public class Product {
private PartA partA;
private PartB partB;
private PartC partC;
public Product() {
}
public Product(PartA partA, PartB partB, PartC partC) {
this.partA = partA;
this.partB = partB;
this.partC = partC;
}
public PartA getPartA() {
return partA;
}
public void setPartA(PartA partA) {
this.partA = partA;
}
public PartB getPartB() {
return partB;
}
public void setPartB(PartB partB) {
this.partB = partB;
}
public PartC getPartC() {
return partC;
}
public void setPartC(PartC partC) {
this.partC = partC;
}
public void show() {
System.out.println("成功建造对象以及内部组件:");
System.out.println(partA.toString() + "---" + partA.getName());
System.out.println(partB.toString() + "---" + partB.getName());
System.out.println(partC.toString() + "---" + partC.getName());
}
}
// Product产品类中的A对象
class PartA {
private String name;
public PartA() {
}
public PartA(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "PartA [name=" + name + "]";
}
}
// Product产品类中的B对象
class PartB {
private String name;
public PartB() {
}
public PartB(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "PartB [name=" + name + "]";
}
}
// Product产品类中的C对象
class PartC {
private String name;
public PartC() {
}
public PartC(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "PartC [name=" + name + "]";
}
}
package com.builder;
public class Director {
private Builder builder;
public Director() {
};
public Director(Builder builder) {
this.builder = builder;
}
public Product construct() {
return builder.getResult();
}
}
package com.builder;
public abstract class Builder {
protected Product product;
public Builder() {
};
public Builder(Product product) {
this.product = product;
}
public abstract void buildPartA();
public abstract void buildPartB();
public abstract void buildPartC();
public abstract Product getResult();
}
package com.builder;
public class ConcreteBuilder extends Builder {
public ConcreteBuilder(Product product) {
this.product = product;
}
@Override
public void buildPartA() {
// Auto-generated method stub
product.setPartA(new PartA("产品中的A部件"));
}
@Override
public void buildPartB() {
// Auto-generated method stub
product.setPartB(new PartB("产品中的B部件"));
}
@Override
public void buildPartC() {
// Auto-generated method stub
product.setPartC(new PartC("产品中的C部件"));
}
@Override
public Product getResult() {
buildPartA();
buildPartB();
buildPartC();
// Auto-generated method stub
return product;
}
}
package com.builder;
public class Main {
public static void main(String[] args) {
System.out.println(".........产品开始建造........");
Product product = new Product();
Builder builder = new ConcreteBuilder(product);
Director director = new Director(builder);
Product resProduct = director.construct();
System.out.println(".........产品建造结束........");
resProduct.show();
}
}
好了,到这里【Java中23种面试常考的设计模式之建造者模式(Builder)—创建型模式】,23种设计模式持续更新汇总中。