建造者模式

2018-10-23  本文已影响9人  fomin

1、概念

建造者模式可以叫生成器模式,属于创建型模式,它是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。

建造者模式
2、模式结构

3、使用场景

4、优缺点

优点:

缺点:

5、实例

public class Package {
    private String name;
    private float price;
    private List<Product> list;

    public String getName() {
        return name;
    }

    public float getPrice() {
        return price;
    }

    public List<Product> getList() {
        return list;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setPrice(float price) {
        this.price = price;
    }

    public void setList(List<Product> list) {
        this.list = list;
    }
}
public abstract class Builder {
    public abstract void setPackage(String name, float price, List<Product> list);

    public abstract Package getPackage();
}
public class ConcreteBuilder extends Builder {

    private Package aPackage = new Package();

    @Override
    public void setPackage(String name, float price, List<Product> list) {
        aPackage.setName(name);
        aPackage.setPrice(price);
        aPackage.setList(list);
    }

    @Override
    public Package getPackage() {
        return aPackage;
    }
}
public class Director {
    private Builder builder = new ConcreteBuilder();

    public Package getAPackage() {
        List<Product> list = new ArrayList<>();
        list.add(new Product("可乐", 10));
        list.add(new Product("薯条", 8.9f));
        builder.setPackage("A套餐", 18.9f, list);
        return builder.getPackage();
    }

    public Package getBPackage() {
        List<Product> list = new ArrayList<>();
        list.add(new Product("可乐", 10));
        list.add(new Product("汉堡", 20.9f));
        builder.setPackage("B套餐", 30.9f, list);
        return builder.getPackage();
    }
}
上一篇 下一篇

猜你喜欢

热点阅读