建造者模式之项目运用

1 问题

建造者模式,我们也许不陌生,因为我们看到很多开源框架或者Android源码里面用到,类似这样的代码结构

A a = new A.builder().method1("111").method2("222").build();

很明显,一般这里的结构有builder()构造函数,还有build()函数,主要用来干嘛呢?还不是为了构建对象,如果需要设置的参数很多的话,一个一个去set很繁琐也不好看,下面有个例子简单粗暴展示。

2 测试代码实现

package com.example.test1;

public class Student {
    private int id;
    private String name;
    private int age;
    private String classNmae;

    public Student(Builder builder) {
        this.id = builder.id;
        this.name = builder.name;
        this.age = builder.age;
        this.classNmae = builder.classNmae;
    }
    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public String getClassNmae() {
        return classNmae;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", classNmae='" + classNmae + '\'' +
                '}';
    }

    public static class Builder {
        private int id;
        private String name;
        private int age;
        private String classNmae;

        public Builder() {}
        public Builder id(int id) {
            this.id = id;
            return this;
        }
        public Builder name(String name) {
            this.name = name;
            return this;
        }
        public Builder age(int age) {
            this.age = age;
            return this;
        }
        public Builder className(String classNmae) {
            this.classNmae = classNmae;
            return this;
        }
        public Student build() {
            return new Student(this);
        }
    }
}
                Student student = new Student.Builder()
                .name("chenyu")
                .age(28)
                .id(1)
                .className("erzhong")
                .build();
        Log.i(TAG, "student toString is:" + student.toString());

3 运行结果

18376-18376/com.example.test1 I/chenyu: student toString is:Student{id=1, name='chenyu', age=28, classNmae='erzhong'}

4 总结

1)我们需要构建一个对象很多参数的时候用这种方式

2)最关键的是需要构建的对象类里面有个Builder类作为参数传递

    public Student(Builder builder) {
        this.id = builder.id;
        this.name = builder.name;
        this.age = builder.age;
        this.classNmae = builder.classNmae;
    }

3)最后build()函数里面返回的是需要构建的类本身

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

相关推荐

  • 建造者模式

    如果一个对象的构建比较复杂,将一个对象的构建和对象的表示进行分离,使得同样的构建过程可以创建不同的表示,那么比较适合采用建造者模式.  builer: 为创建产品的各个部分,统一抽象接口 Abuild ...

  • 建造者模式(Bulider模式)详解

    在软件开发过程中有时需要创建一个复杂的对象,这个复杂对象通常由多个子部件按一定的步骤组合而成.例如,计算机是由 CPU.主板.内存.硬盘.显卡.机箱.显示器.键盘.鼠标等部件组装而成的,采购员不可能自 ...

  • 设计模式--Bulider模式

    起因:最近在做统计计算,创建的实体中属性比较多,都是一些数值,一开始是通过get.set方法进行赋值,占用了很多业务代码方法的长度,可读性不太好,后来改用了添加构造器的方式,稍显精简了一点,但是每次赋 ...

  • 设计模式-创建型-建造者模式

    引言: 无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮.底盘.发动机.方向盘等各种部件.而对于大部分用户而言,无须知道这些部件的装配细节,也几乎不会 ...

  • 手里拿着锤子,看啥都像钉子

    工具与资源中心 帮助开发者更加高效的工作,提供围绕开发者全生命周期的工具与资源 https://developer.aliyun.com/tool?spm=a1z389.11499242.0.0.65 ...

  • 介绍一个开源项目 mapstruct

    正文如下 来源:toutiao.com/i6891531055631696395/ 老铁们是不是经常为写一些实体转换的原始代码感到头疼,尤其是实体字段特别多的时候.介绍一个开源项目 mapstruct ...

  • 【项目纪实】某化工企业组织结构优化与运营模式调整项目纪实

    客户行业  化工行业 问题类型  组织结构优化与运营模式调整 客户评价 华恒智信专家项目组通过对我企业认真细致.深入缜密的调研.分析,在咨询过程中采用各种管理分析方法.管理工具和模型,为我企业提出了组 ...

  • 02.07 使用建造者模式(Builder Pattern)重新构建游戏页面

    这是<小游戏从0到1设计模式重构>系列内容第9篇,所有源码及资料在"程序员LIYI"公众号回复"小游戏从0到1"获取. 建造者模式是将一类复杂产品的 ...

  • ​PHP设计模式之建造者模式

    PHP设计模式之建造者模式 建造者模式,也可以叫做生成器模式,builder这个词的原意就包含了建筑者.开发者.创建者的含义.很明显,这个模式又是一个创建型的模式,用来创建对象.那么它的特点是什么呢? ...

  • [PHP小课堂]PHP设计模式之建造者模式

    [PHP小课堂]PHP设计模式之建造者模式 关注公众号:[硬核项目经理]获取最新文章 添加微信/QQ好友:[DarkMatterZyCoder/149844827]免费得PHP.项目管理学习资料

  • 设计模式-建造者模式

    建造者模式 也叫生成器模式,他是一个创建型模式 通用类图 Product产品类 ​通常是实现了模板方法模式,也就是有模板方法和基本方法. public class Product { public v ...

  • BOT、PPP、BOO、DBOT及委托运营模式的项目全流程的会计处理分录

    5.问题14.关于收入确认方式及相关会计处理 申报文件显示: (1)发行人主要从事污水处理业务,通过取得特许经营权的方式负责污水处理厂的投资建设.运营管理及维护,报告期内在运营项目主要分为BOT模式及 ...

  • 设计模式系列 | 建造者模式

    想自己的开发路子走得更远更久,想成为更牛的码农,那设计模式的理解和掌握是必须的. 老田,能详细说说你的段位2吗? 很多人也都听说过建造者设计模式,但总是对这个设计模式理解得不够透彻,今天我们就来聊聊建 ...

  • 设计模式(4) 建造者模式

    什么是建造者模式 经典建造者模式的优缺点 对建造者模式的扩展 什么是建造者模式 建造者模式将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.创建者模式隐藏了复杂对象的创建过程 ...