设计模式之建造者模式

设计模式之建造者模式

什么叫建造者模式?

建造模式是对象的创建模式。建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。

 

UML

下面用建造者模式的基本代码解释该模式

首先建立一个Product产品类

package builder;

public class Product {
    private String part1;
    private String part2;

    public String getPart1() {
        return part1;
    }

    public void setPart1(String part1) {
        this.part1 = part1;
    }

    public String getPart2() {
        return part2;
    }

    public void setPart2(String part2) {
        this.part2 = part2;
    }

    @Override
    public String toString() {
        return "Product [part1=" + part1 + ", part2=" + part2 + "]";
    }

}

其次建立一个抽象建造者类

package builder;

public interface Builder {
    void buildPart1();
    void buildPart2();
    Product getResult();
}

接着实现具体的建造者类

package builder;

public class ConcreteBuilder1 implements Builder {

    Product product=new Product();
    @Override
    public void buildPart1() {
        // TODO Auto-generated method stub
        product.setPart1("part1");
    }

    @Override
    public void buildPart2() {
        // TODO Auto-generated method stub
        product.setPart2("part2");
    }

    @Override
    public Product getResult() {
        // TODO Auto-generated method stub
        return product;
    }

}
package builder;

public class ConcreteBuilder2 implements Builder {

    Product product=new Product();
    @Override
    public void buildPart1() {
        // TODO Auto-generated method stub
        product.setPart1("part21");
    }

    @Override
    public void buildPart2() {
        // TODO Auto-generated method stub
        product.setPart2("part22");
    }

    @Override
    public Product getResult() {
        // TODO Auto-generated method stub
        return product;
    }

}

当然还需要一个很重要的类--指挥者,用它来控制建造过程,也用它来隔离用户与建造过程的关联

package builder;

public class Director {
    public void construct(Builder builder) {
        builder.buildPart1();
        builder.buildPart2();
    }
}

最后测试类

package builder;

public class Test {
    public static void main(String[] args) {
        Director director=new Director();
        Builder builder =new ConcreteBuilder1();
        director.construct(builder);
        Product product=builder.getResult();
        System.out.println(product);
    }
    
}

 

总结

Builder 是为创建一个Product对象的各个部件指定的抽象接口。

ConcreteBuilder是具体建造者,实现Builder接口,构造和装配各个部件。

Director是构建一个使用Builder接口的对象。

主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。

 

部分内容参考于他人博客,链接为:http://www.cnblogs.com/java-my-life/archive/2012/04/07/2433939.html

 

初学《大话设计模式》

posted @ 2015-12-29 14:55  胖胖的半山兄  阅读(187)  评论(0编辑  收藏  举报