设计模式——建造者模式

概述
建造者模式又称为生成器模式,是一种较为复杂,使用频率也相对较低的创建型模式。建造者模式为客户端返回的不是一个简单的产品,而是一个由多个部件组成的复杂产品。客户端无需知道复杂对象的内部组成部分与装配部分,只需知道所需的创建者类型即可。

建造者模式关注如何一步一步得创建一个复杂对象,不同的具体建造者定义了不同的创建过程,且具体建造者相互独立,增加新的建造者很方便吗无需修改已有代码,系统具有良好的扩展性。

定义
将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。

Pit.java

package main.java.BuilderPatterns;

import java.util.Date;

/**
 * DateTime: 2016/10/23 14:01
 * 功能:
 * 思路:
 */
public class Pit {
    /**
     * Builder类的唯一职责就是创建Pit对象
     */
    public static class Builder{
        private Integer age;
        private String name;
        private Date times;
        private Character sex;
        public Builder withAge(final  Integer age){
            this.age=age;
            return this;
        }
        public Builder withName(final  String name){
            this.name=name;
            return this;
        }
        public Builder withTimes(final Date times){
            this.times=times;
            return this;
        }
        public Builder withSex(final Character sex){
            this.sex=sex;
            return this;
        }

        public Pit build(){
            if(age==null || name==null || times==null || sex==null){
                throw new IllegalStateException("can not creat pet");
            }
            return new Pit(age,name,times,sex);
        }
    }


    private Integer age;
    private String name;
    private Date times;
    private Character sex;

    private Pit(final Integer age,final String name,final Date times,final  Character sex){
        this.age=age;
        this.name=name;
        this.times=times;
        this.sex=sex;
    }

}

LegalBuild.java

package main.java.BuilderPatterns;

import java.util.Date;

/**
 * DateTime: 2016/10/23 14:10
 * 功能:
 * 思路:
 */
public class LegalBuild {
    public static void main(String[] args) {
        final Pit.Builder builder=new Pit.Builder();
        final Pit pit=builder.withAge(20).withName("C").withTimes(new Date(1996/9/20)).withSex('女').build();
    }
}

对程序进行调试 过程中可以看到:
这里写图片描述

运行结束时:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值