

/**
-
@Author: cxh
-
@CreateTime: 18/1/7 23:45
-
@ProjectName: JavaBaseTest
*/
public class Client {
public static void main(String[] args) {
Director director=new Director();
ConcreteBuilder1 concreteBuilder1=new ConcreteBuilder1();
director.build(concreteBuilder1);
Product product1=concreteBuilder1.getProduct();
ConcreteBuilder2 concreteBuilder2=new ConcreteBuilder2();
director.build(concreteBuilder2);
Product product2=concreteBuilder2.getProduct();
//输出product1
System.out.println("product1:");
for(String str:product1.product)
System.out.println(str);
System.out.println("---------");
//输出product2
System.out.println("product2:");
for(String s:product2.product)
System.out.println(s);
}
}
<span style="font-size:14px;">
/**
- @Author: cxh
- @CreateTime: 18/1/7 23:43
- @ProjectName: JavaBaseTest
- 指挥者
*/
public class Director {
public void build(Builder builder){
builder.buildPartA();
builder.buildPartB();
builder.buildPartC();
}
}
<span style="font-size:14px;">
/**
-
@Author: cxh
-
@CreateTime: 18/1/7 23:35
-
@ProjectName: JavaBaseTest
*/
public interface Builder {
//为产品添加各个组成部分
void buildPartA();
void buildPartB();
void buildPartC();
//返回创建的产品
Product getProduct();
}
<span style="font-size:14px;">
/**
-
@Author: cxh
-
@CreateTime: 18/1/7 23:39
-
@ProjectName: JavaBaseTest
*/
public class ConcreteBuilder1 implements Builder {
Product product;
ConcreteBuilder1(){
product=new Product();
}
@Override
public void buildPartA() {
product.addProperties("添加部件A");
}
@Override
public void buildPartB() {
product.addProperties("添加部件B");
}
@Override
public void buildPartC() {
product.addProperties("添加部件C");
}
@Override
public Product getProduct() {
return product;
}
}
<span style="font-size:14px;">
/**
-
@Author: cxh
-
@CreateTime: 18/1/7 23:41
-
@ProjectName: JavaBaseTest
*/
public class ConcreteBuilder2 implements Builder {
Product product;
ConcreteBuilder2(){
product=new Product();
}
@Override
public void buildPartA() {
product.addProperties("添加部件X");
}
@Override
public void buildPartB() {
product.addProperties("添加部件Y");
}
@Override
public void buildPartC() {
product.addProperties("添加部件Z");
}
@Override
public Product getProduct() {
return product;
}
}
<span style="font-size:14px;">
import java.util.ArrayList;
/**
-
@Author: cxh
-
@CreateTime: 18/1/7 23:31
-
@ProjectName: JavaBaseTest
*/
public class Product {
ArrayList product=new ArrayList<>();
public void addProperties(String str){
product.add(str);
}
}
<span style="font-size:14px;">
参考书籍:《大话设计模式》-程杰
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|