大话设计模式-建造者模式学习总结

一、概念

建造者模式,将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。

二、类图及基本代码

这里写图片描述

//产品类
public class Product {
    List<String> parts=new ArrayList<>();

    /*
     * 添加部件
     */
    public void Add(String part){
        parts.add(part);
    }


    /*
     * 显示部件
     */
    public void Show(){
        System.out.println("\n产品    创建----");
        for (String string : parts) {
            System.out.println(string);
        }
    }

}
/*
 * 构建者抽象类
 */
public abstract class Builder {
    public abstract void BuildPartA();

    public abstract void BuildPartB();

    public abstract Product getProduct();
}
/*
 * 具体建造者1
 */
public class ConcreteBuilder1 extends Builder {
    private Product product=new Product();

    @Override
    public void BuildPartA() {
        product.Add("部件A");

    }

    @Override
    public void BuildPartB() {
        product.Add("部件B");
    }

    @Override
    public Product getProduct() {
        return product;
    }


}
//具体构建者2
public class ConcreteBuilder2 extends Builder{
    private Product product=new Product();
    @Override
    public void BuildPartA() {
        product.Add("部件x");
    }

    @Override
    public void BuildPartB() {
        product.Add("部件y");     
    }


    @Override
    public Product getProduct() {
        return product;
    }

}
/*
 * 指挥者:提供一个方法,使用构建者Builder构建对象
 */
public class Director {
    public void Construct(Builder builder){
        builder.BuildPartA();
        builder.BuildPartB();
    }

}
/*
 * 建造者模式:创建一些复杂的对象,这些对象的内部构建间的构造顺序通常是稳定的,
 * 同样的构造过程产生不一样的表现
 */
public class Show {
    public static void main(String[] args) {
        Director director=new Director();
        Builder builder1=new ConcreteBuilder1();
        Builder builder2=new ConcreteBuilder2();

        director.Construct(builder1);
        Product p1=builder1.getProduct();
        p1.Show();


        director.Construct(builder2);
        Product p2=builder2.getProduct();
        p2.Show();
        /*
         * 产品    创建----
         * 部件A
         * 部件B
         * 产品    创建----
         * 部件x
         * 部件y
         */
    }

}

三、总结

1、建造者模式是创建复杂对象Product时的算法应该独立于该对象的组成部分以及它们的装配方式时使用的方式。在基本代码中,复杂对象Product包含两个部件且装配时的方式一致,创建复杂对象的过程一样,但产生不同的表现。
/*
* 产品 创建—-
* 部件A
* 部件B
*
* 产品 创建—-
* 部件x
* 部件y
*/
2、使用时机。用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常是面临着复杂的变化。

As fruit needs not only sunshine but cold nights and chilling showers to ripen it,so character needs not only joy but trial and diffculty to mellow it.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值