【设计模式】学习了构建器模式,就能让你更加方便地创建对象

一、什么是构建器模式

1.概念

构建器(Builder)模式,有的也叫建造者模式。
构建器模式的设计是为了能够让对象的创建更加方便,一般是会设计两个类,一个类是目标类,也就是我们需要的类;另一个类就是构建器类,它是为了我们创建目标类时更加的方便。

2.构建器模式的使用场景

  1. 目标类的属性过多。当我们需要设置参数时,就需要一个一个去set,或者重载构造方法,第一个方法就会让编写的代码十分繁琐;第二个方法就难以重载自己想要的构造方法。
  2. 目标类的属性结构复杂。如果我们每次使用目标类时,都要手动的去设置属性,还要关心它们的内部结构,那么使用目标类的体验感是很差的。

3.优点

  1. 扩展性高
  2. 使用方便

4.缺点

  1. 需要创建构建器类
  2. 依赖性高。一旦目标类改变,构建器也需要改变。

二、简单的构建器模式实现

1.代码

User

package build;

/**
 * @author xxj
 * 用户
 */
public class User {
    private String name;
    private int age;
    private String sex;
    public User() {
    }
    public User(UserBuild build) {
        this.age=build.age;
        this.name=build.name;
        this.sex=build.sex;
    }
     @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                '}';
    }
}

UserBuild

package build;

/**
 * @author xxj
 * 用户构建器
 */
public class UserBuild {
    public String name;
    public int age;
    public String sex;
    public UserBuild(){}
    public UserBuild name(String name){
        this.name=name;
        return this;
    }
    public UserBuild age(int age){
        this.age=age;
        return this;
    }
    public UserBuild sex(String sex){
        this.sex=sex;
        return this;
    }
    public User build(){
        return new User(this);
    }
}

2.使用

package test;

import build.User;
import build.UserBuild;

public class test {
    public static void main(String[] args){
        UserBuild build=new UserBuild();
        build.name("xiaoming").age(18).sex("男");
        User user=new User(build);
        System.out.println(user.toString());
    }
}

结果
在这里插入图片描述

3.注意

  1. 构建器的创建时,需要注意,它的方法返回的是this
  2. 构建器还可以给属性设置默认值,这样可以省去很多默认参数的设置。

三、总结

构建器模式的设计思想就是能够更加便捷地创建一个对象,从上面的例子也可以看出,当属性较少时,没有必要创建一个构建器,但是我举这个例子想表达就是这个想法:创建一个构建器来构建一个对象。
当属性越来越复杂时,构建器的作用就会体现出来了。

——————————————————————————————
如果本文章内容有问题,请直接评论或者私信我。
未经允许,不得转载!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员徐小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值