利用Builder方式创建对象示例代码

利用Builder方式创建对象示例代码的完整攻略

Builder模式是一种创建对象的设计模式,它通过链式调用一系列的方法来设置对象的属性,并最终构建出一个完整的对象。以下是一个示例代码,演示了如何使用Builder方式创建对象:

示例1:创建一个Person对象

public class Person {
    private String name;
    private int age;
    private String address;

    private Person(Builder builder) {
        this.name = builder.name;
        this.age = builder.age;
        this.address = builder.address;
    }

    public static class Builder {
        private String name;
        private int age;
        private String address;

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

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

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

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

    // Getters and setters

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public String getAddress() {
        return address;
    }
}

// Usage
Person person = new Person.Builder()
                    .name(\"John\")
                    .age(25)
                    .address(\"123 Main St\")
                    .build();

在上述示例中,我们定义了一个Person类,其中包含了name、age和address属性。通过Builder类,我们可以链式调用name、age和address方法来设置属性的值,并最终通过build方法构建出一个完整的Person对象。

示例2:创建一个配置对象

public class Config {
    private String host;
    private int port;
    private boolean sslEnabled;

    private Config(Builder builder) {
        this.host = builder.host;
        this.port = builder.port;
        this.sslEnabled = builder.sslEnabled;
    }

    public static class Builder {
        private String host;
        private int port;
        private boolean sslEnabled;

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

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

        public Builder sslEnabled(boolean sslEnabled) {
            this.sslEnabled = sslEnabled;
            return this;
        }

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

    // Getters and setters

    public String getHost() {
        return host;
    }

    public int getPort() {
        return port;
    }

    public boolean isSslEnabled() {
        return sslEnabled;
    }
}

// Usage
Config config = new Config.Builder()
                    .host(\"example.com\")
                    .port(8080)
                    .sslEnabled(true)
                    .build();

在上述示例中,我们定义了一个Config类,其中包含了host、port和sslEnabled属性。通过Builder类,我们可以链式调用host、port和sslEnabled方法来设置属性的值,并最终通过build方法构建出一个完整的Config对象。

以上是利用Builder方式创建对象的示例代码的完整攻略。通过使用Builder模式,我们可以更灵活地创建对象,并且可以避免使用过多的构造函数参数。根据具体需求,您可以根据示例代码进行定制和优化。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用Builder方式创建对象示例代码 - Python技术站

(0)
上一篇 2023年10月14日
下一篇 2023年10月14日

相关文章

  • Win11电脑重启很慢怎么办? win11系统电脑开机慢的解决办法

    Win11电脑重启很慢怎么办? 在Win11系统中,电脑重启很慢可能是由于某些启动项、服务等导致的。下面介绍几种可能的解决办法。 1. 检查启动项 启动项指的是开机自启动的应用程序。有些应用程序在开机自启时可能会占用大量CPU资源,进而导致电脑开机速度变慢。因此,检查和优化启动项可以缩短电脑开机时间。 步骤: 打开任务管理器,选择“启动”选项卡。 对于不必要…

    other 2023年6月26日
    00
  • 微信小程序全局数据globaldata的使用问题

    微信小程序全局数据globalData的使用问题 微信小程序中,全局数据globalData是指可以在整个小程序中共享的数据,可以在任何页面中进行调用和修改。但是,在使用globalData时可能会遇到一些问题,本文将介绍如何正确使用globalData及遇到的一些常见问题和解决方法。 如何定义和使用globalData 定义和使用globalData非常简…

    其他 2023年3月28日
    00
  • SublimeText3配置PHP函数追踪定位插件

    下面是SublimeText3配置PHP函数追踪定位插件的完整攻略: 准备工作 首先你需要安装SublimeText3和插件控制器Package Control,安装方法可以访问官网进行查看。 安装插件 打开SublimeText3,使用快捷键Ctrl+Shift+P打开命令面板,输入“Install Package”,等待列表加载完毕之后输入“PhpFun…

    other 2023年6月27日
    00
  • c语言 指针零基础讲解

    C语言指针零基础讲解 什么是指针? 在C语言中,指针是一种特殊类型的变量,它存储着另一个变量的地址,也就是说,指针变量指向另一个变量的内存地址。我们可以通过解引用操作符*来获取指针指向的变量的值。 指针的定义和声明 指针的定义和声明可以分开进行。指针变量的定义包括指定指针类型和变量名,例如: int *p; char *s; double *d; 这里的*表…

    other 2023年6月27日
    00
  • echarts在没有数据时显示暂无数据

    Echarts在没有数据时显示暂无数据的完整攻略 Echarts是一款基于JavaScript的数据可视化库,可以用于创建各种类型的图表。在使用Echarts时,有时候需要在没有数据时显示“暂无数据”提示。以下是Echarts没有数据时显示暂无数据的完整攻略。 步骤1:设置空数据提示 在Echarts中,可以使用noDataLoading属性来空数据提示。可…

    other 2023年5月8日
    00
  • dedecms各模板调用自定义字段的方法

    下面就来详细讲解一下“dedecms各模板调用自定义字段的方法”的完整攻略。 1. 自定义字段 在dedecms中,自定义字段是非常强大的一个功能。它可以让我们根据实际需求自定义一些字段,以存储一些与文章内容相关的附加信息。为了方便起见,下面我们假设需要添加一个“作者”字段。 首先,在后台管理界面中,我们需要创建一个自定义字段: 登陆dedecms后台管理界…

    other 2023年6月25日
    00
  • 深入理解JavaScript中的块级作用域、私有变量与模块模式

    块级作用域:块级作用域(Block Scope)允许你创建受保护的变量,这些变量只能在当前的块中被访问。在ES6之前,JavaScript中并没有块级作用域的概念,只有全局作用域和函数作用域。在ES6中新增了let和const关键字,它们可以用来声明块级作用域的变量。 示例: // 使用let声明块级作用域的变量 function foo() { if (t…

    other 2023年6月26日
    00
  • securecrt(CRT)导入会话

    SecureCRT导入会话的完整攻略 本文将为您详细讲解SecureCRT导入会话的方法,包括导入会话的步骤、常见问题及解决方法等内容。 导入会话的步骤 SecureCRT是一款常用的终端仿真软件,可以通过导入会话的方式快速连接到目标主机。导入会话的步骤如下: 打开SecureCRT软件,点击“文件”菜单,选择“导入”选项。 在弹出的“导入会话”对话框中,选…

    other 2023年5月6日
    00
合作推广
合作推广
分享本页
返回顶部