建造者模式、、、

1、建造者模式

将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。

产品类:

 1 package pers.example.demo.design.builder;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 
 6 /**
 7  * @author gwx
 8  */
 9 public class Product {
10     List<String> partList = new ArrayList<>();
11 
12     public void add(String part){
13         partList.add(part);
14     }
15     public void show(){
16         for(String s:partList){
17             System.out.println("我是" + s);
18         }
19     }
20 }

建造者抽象接口:

 1 package pers.example.demo.design.builder;
 2 
 3 /**
 4  * @author gwx
 5  */
 6 public interface Builder {
 7     void buildPartA();
 8     void buildPartB();
 9     Product getResult();
10 }

建造者实现类:

 1 package pers.example.demo.design.builder;
 2 
 3 /**
 4  * @author gwx
 5  */
 6 public class BuilderImplA implements Builder{
 7     private Product product = new Product();
 8 
 9     @Override
10     public void buildPartA() {
11         product.add("A 的 胳膊");
12     }
13 
14     @Override
15     public void buildPartB() {
16         product.add("A 的 腿");
17 
18     }
19 
20     @Override
21     public Product getResult() {
22         return product;
23     }
24 }
 1 package pers.example.demo.design.builder;
 2 
 3 /**
 4  * @author gwx
 5  */
 6 public class BuilderImplB implements Builder{
 7     private Product product = new Product();
 8     @Override
 9     public void buildPartA() {
10         product.add("B 的 胳膊");
11     }
12 
13     @Override
14     public void buildPartB() {
15         product.add("B 的腿");
16     }
17 
18     @Override
19     public Product getResult() {
20         return product;
21     }
22 }

指挥者类:

 1 package pers.example.demo.design.builder;
 2 
 3 /**
 4  * @author gwx
 5  */
 6 public class Derector {
 7     public static Product build(Builder builder){
 8         builder.buildPartA();
 9         builder.buildPartB();
10         return builder.getResult();
11     }
12 }

客户端:

package pers.example.demo.design.builder;

/**
 * @author gwx
 */
public class Client {
    public static void main(String[] args) {
        Product product = Derector.build(new BuilderImplA());
        product.show();
        product = Derector.build(new BuilderImplB());
        product.show();
    }
}

 

posted @ 2019-11-26 21:57  菜鸟在行动  阅读(110)  评论(0)    收藏  举报