设计模式笔记(4)--建造者模式

建造者模式

GOF对建造者模式的定义是:“将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.”

public abstract class Builder 
{
    public abstract void BuildPartA();
    public abstract void BuildPartB();
    public abstract Product GetResult();
}

public class Product
{
    ArrayList<String> parts = new ArrayList<String>();
    public void Add(String part)
    {
        parts.add(part);
    }
    public void Show()
    {
        System.out.println("create product");
        for(int i = 0;i<parts.size();i++) {
            String part = parts.get(i);
            System.out.println(part);
        }
    }
}
//具体的建造者类
public class ConcreteBuilderA extends Builder
{
    private Product product = new Product();
    @override
    public void BuildPartA()
    {
        product.Add("part A");
    }
    @override
    public void BuildPartB()
    { 
        product.Add("part B");
    }
    @override
    public Product GetResult()
    { 
        return product;
    }
}
public class ConcreteBuilderB extends Builder
{
    private Product product = new Product();
    @override
    public void BuildPartA()
    {
        product.Add("part W");
    }
    @override
    public void BuildPartB()
    { 
        product.Add("part Z");
    }
    @override
    public Product GetResult()
    { 
        return product;
    }
}

//指挥者类
public class Director {
    public void Construct(Builder builder)
    {
        builder.BuildPartA();
        builder.BuildPartB();  
    }
}

建造者的作用是隐藏产品的组装过程,如果需要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以达到目的。
建造者模式是面向对象中“多态”的一个好应用。
工厂模式侧重点在于将对象的实例化延迟到子类中,创建者的侧重点则是保持一个对象创建过程的稳定性。
工厂模式专注于创造相同表象的对象,当需要得到具有多种表象的实例时,建造者模式才是好选择、

    原文作者:球球球球笨
    原文地址: https://www.jianshu.com/p/95dae91beb33
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞