前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >建造者模式

建造者模式

作者头像
晚上没宵夜
发布2022-05-09 21:12:47
3230
发布2022-05-09 21:12:47
举报

日常总能看到用 build 方法创建一个对象,当时就在想问什么这么麻烦,直接 new 一个不可以吗?

1. 建造者模式(Builder Pattern)

建造者模式是将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。它是构造方法的一种代替,当构造函数的参数多于4个,且部分参数是可选时可以考虑使用该模式

注意与工厂模式的区别:

  • 建造者:更注重方法的调用顺序,内容(组装对象),创建对象是不同的
  • 工厂:注重创建对象(生产对象),且常见对象都一样

2. 流程

参考并稍加修改开源框架 Mybatis 如何使用 非传统 的建造者模式,下面用 Computer 类作为创建的对象

2.1 创建的对象类

代码语言:javascript
复制
public class Computer {

    private String cpu;
    private String ram;
    private String vga;
    private String hdd;

    public Computer(String cpu, String ram, String vga, String hdd) {
        this.cpu = cpu;
        this.ram = ram;
        this.vga = vga;
        this.hdd = hdd;
    }
}

2.2 建造器

代码语言:javascript
复制
public class ComputerBuilder {

    public ComputerBuilder() {
    }

    public Computer build(String cpu, String ram) {
        return this.build(cpu, ram, null, null);
    }

    public Computer build(String cpu, String ram, String vga) {
        return this.build(cpu, ram, vga, null);
    }

    public Computer build(String cpu, String ram, String vga, String hdd) {
        return new Computer(cpu, ram, vga, hdd);
    }
}

2.3 测试

代码语言:javascript
复制
public static void main(String[] args) {
    Computer computer = new ComputerBuilder().build("i5", "8g");
    System.out.println(computer);
}

// Computer{cpu='i5', ram='8g', vga='null', hdd='null'}

参考: new SqlSessionFactoryBuilder().build(inputStream)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 建造者模式(Builder Pattern)
  • 2. 流程
    • 2.1 创建的对象类
      • 2.2 建造器
        • 2.3 测试
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档