建造者模式之项目运用

简介: 建造者模式之项目运用

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()函数里面返回的是需要构建的类本身

1. public Student build() {
2. return new Student(this);
3.         }

 

相关文章
|
11月前
|
设计模式 Java Maven
【建造者模式】
【建造者模式】
|
5月前
|
设计模式 C++
【C++】—— 建造者模式
【C++】—— 建造者模式
|
算法 程序员
建造者模式的运用
建造者模式的运用
39 0
|
5月前
|
Java Linux Spring
终于懂了建造者模式
终于懂了建造者模式
29 1
|
11月前
建造者模式
建造者模式
46 1
|
缓存 Java C++
建造者模式解读
建造者模式解读
建造者模式解读
|
设计模式 Java
构建完美对象:探索Java设计模式中的建造者模式
在软件开发领域,设计模式是一套经过实践验证的最佳实践方法,用于解决各种常见问题。建造者模式是创建型设计模式的一员,它的目标是构建复杂对象时保持灵活性和清晰性。在本文中,我们将深入了解建造者模式的本质,以及它如何在Java中得以实现。
66 0
|
设计模式 C++
2023-6-13-第四式建造者模式
2023-6-13-第四式建造者模式
64 0
|
设计模式
工厂模式在项目中的日常应用
工厂模式(Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的最佳实践,让客户端代码从具体类的实例化中解耦出来。在项目中,工厂模式经常被使用,下面我将从几个方面详细介绍工厂模式在项目中的日常应用。
184 0
|
设计模式 前端开发 数据库
设计模式-三个工厂
设计模式-三个工厂
64 0