博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java23种设计模式之四:建造者模式
阅读量:6037 次
发布时间:2019-06-20

本文共 1859 字,大约阅读时间需要 6 分钟。

一.build 介绍

二.实现原理

  通过访问静态内部的形式得到内部类,内部类通过有参方法将传入的参数赋值给静态内部类对象,外部类私有构造函数,参数设置成静态内部类对象当静态内部类对象通过无参的build方法获得外部类时,外部类构造函数需要传入静态内部类实例对象,此时,精彩的来了,因为通过访问静态内部的方法获得了内部类对象,而在调用build方法时需要传入内部类对象,而在外部类的私有构造中传入的是静态内部类对象,因此build方法之前全是静态内部类对象,而在build时,确将自己当成参数传入外部类的构造函数中,通过外部类的构造函数里的赋值,得到了外部类对象的实例。

  仔细想想,将自己当成参数传入确实精彩

三.应用场景

  当需要传入的参数比较多时(超过4个),可以通过此模式

四.代码实现

public class Persion {    private String name;        private String address;        private Integer phoneNum;        private Integer age;        private Date jobDate;        public static class Builder{        private String name = "";                private String address;                private Integer phoneNum;                private Integer age;                private Date jobDate;                public Persion build() {            return new Persion(this);        }                public Builder name(String name) {            this.name = name;            return this;        }        public Builder address(String address) {            this.address = address;            return this;        }        public Builder phoneNum(Integer phoneNum) {            this.phoneNum = phoneNum;            return this;        }        public Builder age(Integer age) {            this.age = age;            return this;        }        public Builder jobDate(Date jobDate) {            this.jobDate = jobDate;            return this;        }            }    private Persion(Builder builder) {        name = builder.name;        age = builder.age;        address = builder.address;        jobDate = builder.jobDate;    }    public static void main(String[] args) {        Persion persion = new Persion.Builder().name("zhang san").address("北京").age(23).phoneNum(133333)                .jobDate(new Date()).build();        System.out.println(persion);    }}

 

转载于:https://www.cnblogs.com/MrRightZhao/p/10810414.html

你可能感兴趣的文章
wireshark tcp 协议分析 z
查看>>
Need a code of lazy load for div--reference
查看>>
HTable和HTablePool使用注意事项
查看>>
如何使用JW Player来播放Flash并隐藏控制按钮和自定义播放完成后执行的JS
查看>>
04 http协议模拟登陆发帖
查看>>
Codeforces Round #298 (Div. 2) B. Covered Path 物理题/暴力枚举
查看>>
百度地图定位地址为空
查看>>
云计算设计模式(五)——计算资源整合模式
查看>>
关于classpath
查看>>
[数据库事务与锁]详解一: 彻底理解数据库事务
查看>>
Debug和Release区别
查看>>
Android 手机卫士--打包生成apk维护到服务器
查看>>
Python下载
查看>>
USACO 5.1.1凸包
查看>>
.net ubuntu 下兼容性
查看>>
Percona Online Tools
查看>>
第一节 Memcached分布式缓存入门
查看>>
Http Status404 The requested resource is not available 问题的解决
查看>>
DirectShow应用——视频捕捉WDM Vs VFW2
查看>>
HTTP POST请求的Apache Rewrite规则设置
查看>>