• Builder 模式


    特点:将对象的表示与对象的创建过程分离,对不同产品具体内容可能有差异,但包装过程相同,则可采用Builder模式。

    模式对象:

    1.产品:即客户所需具体产品

    2.抽象建造者:说明产品生产所需的函数(过程定义)

    3.具体建造者:结合实际产品对象进行生产的函数(过程实现)

    4.指导者:结合抽象建造者函数说明具体产品的封装过程

    5.客户:产品需求者

    举个栗子:

    1.产品

    public class Product {
    private ArrayList<String> product=new ArrayList<String>();
    public void addPart(String partName){
    product.add(partName);
    }

    public void showProduct(){
    for(String part:product){
    System.out.println(part);
    }
    }
    }
    2.抽象建造者
    public abstract class Builder{
    public abstract void buildPartA();
    public abstract void buildPartB();
    public abstract Product getProduct();
    }
    3.具体建造者
    public class ConcreteBuilder extends Builder{
    private Product product=new Product();
    public void buildPartA(){
    product.addPart("PartA");
    }
    public void buildPartB(){
    product.addPart("PartB");
    }
    public Product getProduct(){
    if(product != null)
    return product;
    return null;
    }
    }
    4.指导者
    public class Director {
    public void construct(Builder builder){
    builder.buildPartA();
    builder.buildPartB();
    }
    }
    5.用户
    public class Client {
    public static void main(String[] args) {
    Director director=new Director();

    Builder concreteBuilder=new ConcreteBuilder();
    director.construct(concreteBuilder);
    Product product=concreteBuilder.getProduct();
    product.showProduct();
    }
    }
  • 相关阅读:
    CSP_2019
    luogu_P1026 统计单词个数
    [SCOI2007]降雨量
    [HEOI2016/TJOI2016]排序
    LuoguP2698 【[USACO12MAR]花盆Flowerpot】
    LuoguP3069 【[USACO13JAN]牛的阵容Cow Lineup
    CF723D 【Lakes in Berland】
    CF799B T-shirt buying
    迪杰斯特拉算法(Dijkstra) (基础dij+堆优化) BY:优少
    Tarjan求有向图强连通分量 BY:优少
  • 原文地址:https://www.cnblogs.com/ssMellon/p/6517973.html
Copyright © 2020-2023  润新知