2019-08-02-建造者模式

一,应用场景,

  • 复杂对象的创建和表示分离
  • 当一个类的内部数据过于复杂的时候(通常是负责持有数据的类,比如Config、VO、PO、Entity...)

二,具体应用场景

  • 相同的方法,不同的调用顺序产生的结果不一样
  • 多个组件都可以组装在同一个对象上,但是产生的结果不一样
    例子:警告框的多种展示方式、各个组件组装摩托车
  • 当一个类特别复杂的时候,并且初始化默认参数(网络请求)

三,简单实现代码如下

public final class Student {

    private Student(Builder b) {
        this.id = b.id;
        this.name = b.name;
    }

    private int id;
    private String name;

    public static class Builder {

        private int id;

        private String name;

        public Builder setId(int id) {
            this.id = id;
            return this;
        }

        public Builder setName(String name) {
            this.name = name;
            return this;
        }

        public Student build() {
            return new Student(this);
        }
    }
}

四,使用方式

Student stu = new Student.Builder().setId(0).setName("name").build()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,062评论 6 13
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,835评论 1 32
  • 前言: 本文转自前同事casa的博文,这篇文章是基于runtime实现的iOS组件化方案,其实iOS组件化方案基本...
    monkey01阅读 1,759评论 1 2
  • 20170228 靠耐心与等待赚钱 这是查理.芒格与巴菲特的投资秘诀,简单的事情重复做,重要的决策就那么几个,做一...
    拆书家孟钢阅读 590评论 0 5

友情链接更多精彩内容