设计模式之Builder模式

概述

在平时开发或者开别人源码的时候,都会看到很多的Builder,它把构建的细节完全隐蔽起来,在用户不知道构建细节的情况下把一个对象创建了出来,就很像建房子一样,我们只需要提供材料、工钱和设计图,建设过程全部交由建设工程师做,你完全可以不用知道怎么做,最后一个跟设计图一样的房子就会出现在面前(当然需要时间)。

Builder模式

例子

//房子构建类
public class HourseBuilder {

    public double price;
    public String design;
    public String material;
    public String place;

    //必须要的参数放在构造函数初始化
    public HourseBuilder(String place) {
        this.place=place;
    }

    // 工钱
    public HourseBuilder price(double price) {
        this.price = price;
        return this;
    }

    // 设计图
    public HourseBuilder design(String design) {
        this.design = design;
        return this;
    }

    // 材料
    public HourseBuilder material(String material) {
        this.material = material;
        return this;
    }
    //竣工
    public Hoursebuilder(){
        return new Hourse(this);
    }
}


//房子类
public class Hourse{
    private double price;
    private String design;
    private String material;
    private String place;

    public Hourse(HourseBuilder builder){
        this.price=builder.price;
        this.design=builder.design;
        this.material=builder.material;
        this.place=builder.place;
    }
}


//客户端
    Hourse hourse=new HourseBuilder("中国")
                .price(2000000000)
                .design("复式")
                .material("材料")
                .builder();

以上便是Builder模式的简单使用方法,还可以使用一个专门存放参数的类,将传进来的参数封装在这个类中。

优点:客户端不必知道产品内部的细节,并且构建者之间是独立的,可在构建过程中进行细化。能够将一个复杂对象将构造和表示分离开。
缺点:由于构建过程是隐蔽的,所以有可能造成构建结果跟预想的有偏差。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/A_sendy/article/details/79968322
个人分类: 设计模式
上一篇设计模式之策略模式
下一篇设计模式之工厂模式
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭