简单梳理建造者模式
建造者模式实现
首先定义产品类,由多个零部件构成
import java.util.ArrayList;
import java.util.List;
public class Product {
List<String> parts = new ArrayList<>();
public void Add(String part){
parts.add(part);
}
public void Show(){
System.out.println("产品创建:");
for (String part: parts) {
System.out.println(part);
}
}
}
Builder类,抽象建造者类
public abstract class Builder {
public abstract void BuildPartA();
public abstract void BuildPartB();
public abstract Product GetResult();
}
ConcreteBuilder1类,具体建造者1
public class ConcreteBuilder1 extends Builder{
private Product product = new Product();
@Override
public void BuildPartA() {
product.Add("部件A");
}
@Override
public void BuildPartB() {
product.Add("部件B");
}
@Override
public Product GetResult() {
return product;
}
}
ConcreteBuilder2类,具体建造者2
public class ConcreteBuilder2 extends Builder{
private Product product = new Product();
@Override
public void BuildPartA() {
product.Add("部件X");
}
@Override
public void BuildPartB() {
product.Add("部件Y");
}
@Override
public Product GetResult() {
return product;
}
}
Director类,指挥者类
public class Director {
public void Construct(Builder builder){
builder.BuildPartA();
builder.BuildPartB();
}
}
定义业务方法
看在具体业务逻辑中如何使用
public class BuilderTest {
public static void main(String[] args) {
//建造者模式
func1();
}
public static void func1(){
Director director = new Director();
Builder b1 = new ConcreteBuilder1();
Builder b2 = new ConcreteBuilder2();
director.Construct(b1);
Product p1 = b1.GetResult();
p1.Show();
director.Construct(b2);
Product p2 = b2.GetResult();
p2.Show();
}
}
执行结果
产品创建:
部件A
部件B
产品创建:
部件X
部件Y
结果分析
建造者模式,将一个复杂对象的建造与它的表现分离,使得同样的构建过程可以构建不同的表示。
联系作者
微信公众号
xiaomingxiaola
(BossLiu)
QQ群
58726094
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 384276224@qq.com