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

yizhihongxing

利用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日

相关文章

  • C语言汉诺塔的简单了解

    C语言汉诺塔的简单了解 什么是汉诺塔? 汉诺塔是一个古老的印度数学问题,也被称为河内塔问题。汉诺塔的游戏内容是将三根柱子(A、B、C)上的盘子按照一定的规则移动到另一个柱子上,移动过程中要求大盘子在小盘子上面。在程序语言中,汉诺塔常用来作为递归函数的案例。 汉诺塔的规则 每次只能移动一个盘子。 盘子只能从上面取下放在一根另外的柱子上。 移动过程中大盘子要在小…

    other 2023年6月27日
    00
  • phpcms V9二级目录下分页路径不正确问题的彻底解决方法

    下面我将为你详细讲解“phpcms V9二级目录下分页路径不正确问题的彻底解决方法”的完整攻略。 问题描述 当我们把phpcms V9放置在站点的非根目录下时,就会出现分页路径不正确的问题。原因是phcms V9默认使用的是根目录路径,而没有考虑站点放置的目录。例如,我们的站点放置在www.example.com/cms目录下,当我们访问分页时,路径会变成w…

    other 2023年6月27日
    00
  • Debian 9.4 系统安装及Jdk等工具安装方法

    下面是完整的Debian 9.4系统安装及Jdk等工具安装方法攻略。 安装Debian 9.4 下载系统镜像 首先,我们需要在Debian官网上下载Debian 9.4的系统镜像文件。在此,以64位AMD架构为例: wget -c http://mirrors.ustc.edu.cn/debian-cd/current/amd64/iso-cd/debian…

    other 2023年6月27日
    00
  • 对angular2中的ngfor和ngif指令嵌套实例讲解

    对Angular 2中的ngFor和ngIf指令嵌套实例讲解 在Angular 2中,ngFor和ngIf是两个常用的指令,它们可以嵌套在一起使用,以实现更复杂的逻辑和功能。下面将详细讲解如何在Angular 2中嵌套使用ngFor和ngIf指令,并提供两个示例说明。 示例1:基本嵌套使用 首先,我们来看一个基本的嵌套使用示例。假设我们有一个包含学生信息的数…

    other 2023年7月28日
    00
  • JavaScript实现穷举排列(permutation)算法谜题解答

    关于“JavaScript实现穷举排列(permutation)算法谜题解答”的完整攻略,我将从以下几个方面进行讲解: 算法概述:介绍穷举排列算法的基本思路和实现方式; JavaScript实现:通过JavaScript代码实现穷举排列算法; 示例说明:提供两个穷举排列算法的实例,详细介绍其实现过程和运行结果。 1.算法概述 穷举排列算法是一种求解排列问题的…

    other 2023年6月27日
    00
  • oraclemax函数的使用方法

    以下是“Oracle MAX函数的使用方法的完整攻略”的标准markdown格式文本,其中包含了两个示例说明: Oracle MAX函数的使用方法 Oracle MAX函数用于返回一组中的最大值。该函数可以用于数字、日期和字符类型的数据。本文介绍Oracle MAX函数的使用方法,包括语法、例和注意事项。 1. 语法 Oracle MAX函数的语法如下: M…

    other 2023年5月10日
    00
  • javascript定义变量时加var与不加var的区别

    JavaScript定义变量时加var与不加var的区别 在JavaScript中,定义变量时可以选择是否使用var关键字。这两种方式在作用域、变量提升和全局变量等方面有所不同。下面将详细讲解这两种方式的区别,并提供两个示例说明。 使用var关键字定义变量 当使用var关键字定义变量时,变量的作用域将限定在当前函数作用域或全局作用域中。这意味着在函数内部定义…

    other 2023年7月29日
    00
  • spring中bean的生命周期详解

    这里给出 “spring中bean的生命周期详解” 的完整攻略: 什么是Bean的生命周期? 在 Spring 中,当一个 Bean 被创建出来并可以被容器使用时,会经历以下几个状态,这些状态构成了一个 Bean 的生命周期: Bean 的实例化 Bean 的属性设置 Bean 的初始化 Bean 的销毁 下面我们来详细讲解每个状态。 Bean 的实例化 在…

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